Go 및 Viper 라이브러리를 사용할 때 포인터를 전달 해야하는 이유는 무엇입니까?
바이퍼 라이브러리 사용에서 Go Pointer Syntax 및 문제 해결 문제
GO에 프로그래밍 할 때 특히 Viper와 같은 타사 라이브러리와 함께 사용되는 경우 포인터의 구문 및 사용법을 이해하는 것이 중요합니다. 깊은 이해가 필요한 일부 문제가 발생할 수 있습니다. 오늘 우리가 논의 할 문제는 Viper 라이브러리 사용에서 매개 변수를 올바르게 전달하는 방법과 포인터를 포인터로 전달하는 이유에 관한 것입니다.
프로젝트에는 설정, 섹션, 글로벌 및 메인의 여러 모듈이 있습니다. 특정 코드는 다음과 같습니다.
설정 모듈 :
유형 설정 구조 { VP *VIPER.VIPER } FUNC NewsSetting () (*설정, 오류) { vp : = viper.new () vp.setconfigname ( "config") vp.addconfigpath ( "configs/") vp.setconfigtype ( "yaml") err : = vp.readinconfig () err! = nil {인 경우 반환 nil, err } 반환 및 설정 {vp : vp}, nil }
섹션 모듈 :
유형 serversettings struct { runmode 문자열 httpport 문자열 readtimeout time.duration writeTimeout time.duration } func (s *setting) readsection (k string, v interface {}) 오류 { err : = s.vp.unmarshalkey (k, v) err! = nil {인 경우 반환 오류 } 반환 nil }
글로벌 모듈 :
var serversetting *setting.serversettings
메인 모듈 :
설정, err : = setting.ewsetting () setting.readsection ( "Server", & global.serversetting)
이제 기본 모듈에서 두 번째 줄을 setting.readsection ( "server", global.serversetting)으로 수정하면 오류 결과가 주소 지정할 수 있어야합니다 (포인터). 이게 왜?
문제는 Global.serversetting이 이미 포인터라는 것입니다. 판독 방법을 호출 할 때 주소를 전달 해야하는 이유는 무엇입니까?
Viper 라이브러리의 소스 코드에 설명이 있습니다.
// NewDecoder는 주어진 구성에 대해 새 디코더를 반환합니다. 한 번 // 디코더가 반환되었으며 동일한 구성을 사용해서는 안됩니다. // 다시. func newdecoder (config *decoderconfig) ( *디코더, 오류) { val : = recind.valueof (config.result) val.kind ()! = 반사 .ptr {If If 반환 nil, errors.new ( "결과는 포인터 여야합니다") } val = val.elem () if! val.canaddr () { 반환 nil, errors.new ( "결과를 해결할 수 있어야합니다 (포인터)") } }
이 코드에서 전달 된 매개 변수는 포인터 일뿐 만 아니라 주소를 해결할 수 있어야한다는 것을 알 수 있습니다 (주소를 다룰 수 있음). 포인터를 구조로 전달하면 그 자체로 해결할 수 없으므로 오류가 발생합니다.
이를 확인하려면 다음 예를 살펴볼 수 있습니다.
패키지 메인 수입 (수입) "FMT" "반영하다" )) var a *db 유형 DB 구조물 { } func main () { val : = Recel.Valueof (a) val = val.elem () fmt.println (val.canaddr ()) val = Reflect.Valueof (& a) val = val.elem () fmt.println (val.canaddr ()) }
이 코드를 실행하면 다음 출력이 나타납니다.
거짓 진실
이것은 A가 전달되면 (즉, 포인터), 그 요소를 해결할 수없고, & a가 전달되는시기 (즉, 포인터의 포인터), 그 요소를 다룰 수 있음을 보여줍니다.
따라서 읽기 방법을 사용할 때는 & global.serversetting을 통과해야합니다. 이러한 방식으로 포인터의 주소가 전달되어 해결 될 수 있으므로 Viper 라이브러리의 요구 사항을 충족시키기 때문입니다.
위 내용은 Go 및 Viper 라이브러리를 사용할 때 포인터를 전달 해야하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











크로스 체인 거래를 지원하는 교환 : 1. Binance, 2. Uniswap, 3. Sushiswap, 4. Curve Finance, 5. Thorchain, 6. 1inch Exchange, 7. DLN 거래,이 플랫폼은 다양한 기술을 통해 다중 체인 자산 거래를 지원합니다.

Worldcoin (WLD)은 Cryptocurrency 시장에서 고유 한 생체 인정 및 개인 정보 보호 메커니즘으로 눈에 띄고 많은 투자자의 관심을 끌고 있습니다. WLD는 혁신적인 기술, 특히 OpenAi 인공 지능 기술과 함께 Altcoins에서 뛰어난 성과를 거두었습니다. 그러나 향후 몇 년 안에 디지털 자산은 어떻게 행동 할 것인가? WLD의 미래 가격을 함께 예측합시다. 2025 WLD 가격 예측은 2025 년 WLD에서 상당한 성장을 달성 할 것으로 예상됩니다. 시장 분석에 따르면 평균 WLD 가격은 최대 $ 1.36로 $ 1.31에 도달 할 수 있습니다. 그러나 곰 시장에서 가격은 약 $ 0.55로 떨어질 수 있습니다. 이러한 성장 기대는 주로 WorldCoin2에 기인합니다.

암호 화폐의 번화 한 세계에서는 새로운 기회가 항상 나타납니다. 현재 Kerneldao (Kernel) 에어 드롭 활동은 많은 관심을 끌고 많은 투자자들의 관심을 끌고 있습니다. 그렇다면이 프로젝트의 기원은 무엇입니까? BNB 보유자는 어떤 이점을 얻을 수 있습니까? 걱정하지 마십시오. 다음은 당신을 위해 하나씩 공개 할 것입니다.

cryptocurrency 시장의 급락으로 인해 투자자들 사이에 공황이 발생했으며 Dogecoin (Doge)은 가장 어려운 지역 중 하나가되었습니다. 가격은 급격히 하락했으며 분산 금융 (DEFI) (TVL)의 총 가치 잠금 장치도 크게 감소했습니다. "Black Monday"의 판매 물결은 cryptocurrency 시장을 휩쓸었고 Dogecoin은 처음으로 타격을 받았습니다. DefitVl은 2023 년 수준으로 떨어졌고 지난 달 통화 가격은 23.78% 하락했습니다. Dogecoin의 Defitvl은 주로 SOSO 가치 지수의 26.37% 감소로 인해 272 만 달러로 떨어졌습니다. 지루한 Dao 및 Thorchain과 같은 다른 주요 Defi 플랫폼도 TVL도 각각 24.04% 및 20으로 떨어졌습니다.

2025 년에 레버리지 거래, 보안 및 사용자 경험에서 뛰어난 성능을 보이는 플랫폼은 다음과 같습니다. 1. OKX, 고주파 거래자에게 적합하여 최대 100 배의 레버리지를 제공합니다. 2. Binance, 전 세계의 다중 통화 거래자에게 적합하며 125 배 높은 레버리지를 제공합니다. 3. Gate.io, 전문 파생 상품 플레이어에게 적합하며 100 배의 레버리지를 제공합니다. 4. 초보자 및 소셜 트레이더에게 적합한 Bitget, 최대 100 배의 레버리지를 제공합니다. 5. 크라켄은 꾸준한 투자자에게 적합하며 5 배의 레버리지를 제공합니다. 6. Bybit, Altcoin Explorers에 적합하며 20 배의 레버리지를 제공합니다. 7. 저비용 거래자에게 적합한 Kucoin, 10 배의 레버리지를 제공합니다. 8. 비트 피 넥스, 시니어 플레이에 적합합니다

Aavenomics는 AAVE 프로토콜 토큰을 수정하고 Aavedao의 쿼럼을 구현 한 Token Repos를 소개하는 제안입니다. AAVE 프로젝트 체인 (ACI)의 설립자 인 Marc Zeller는 X에서 이것을 발표하여 계약의 새로운 시대를 표시한다고 지적했습니다. AAVE 체인 이니셔티브 (ACI)의 설립자 인 Marc Zeller는 AAVENOMICS 제안서에 AAVE 프로토콜 토큰 수정 및 토큰 리포지션 도입이 포함되어 있다고 X에서 AAVEDAO에 대한 쿼럼을 달성했다고 발표했습니다. Zeller에 따르면, 이것은 계약의 새로운 시대를 나타냅니다. Aavedao 회원국은 수요일에 주당 100 인 제안을지지하기 위해 압도적으로 투표했습니다.

cryptocurrency 교환 선택에 대한 제안 : 1. 유동성 요구 사항의 경우 우선 순위는 순서 깊이와 강한 변동성 저항으로 인해 Binance, Gate.io 또는 Okx입니다. 2. 규정 준수 및 보안, 코인베이스, 크라켄 및 쌍둥이 자리는 엄격한 규제 승인을 받았습니다. 3. Kucoin의 소프트 스테이 킹 및 Bybit의 파생 설계 혁신적인 기능은 고급 사용자에게 적합합니다.

초보자에게 적합한 cryptocurrency 데이터 플랫폼에는 CoinmarketCap 및 비소 트럼펫이 포함됩니다. 1. CoinmarketCap은 초보자 및 기본 분석 요구에 대한 글로벌 실시간 가격, 시장 가치 및 거래량 순위를 제공합니다. 2. 비소 인용문은 중국 사용자가 저 위험 잠재적 프로젝트를 신속하게 선별하는 데 적합한 중국 친화적 인 인터페이스를 제공합니다.
