최근 사용자는 포인터를 전달할 때 json.Unmarshal을 사용하여 예상치 못한 동작을 발견했습니다. 차이점이 존재하는 이유를 조사해 보겠습니다.
공식 문서에는 포인터가 처음에 nil인 경우 Unmarshal이 가리키는 새 값을 자동 할당하도록 제안하는 문이 있습니다.
Unmarshal 포인터가 가리키는 값으로 JSON을 역마샬링합니다. 포인터가 nil이면 Unmarshal은 포인터가 가리키는 새 값을 할당합니다.
그러나 초기화되지 않은 포인터로 Unmarshal을 사용하려고 하면 InvalidUnmarshalError가 발생합니다.
// InvalidUnmarshalError Unmarshal에 전달된 잘못된 인수를 설명합니다.
// (Unmarshal에 대한 인수는 nil이 아닌 포인터여야 합니다.)
이 오류는 문서의 제안과 충돌합니다. 자동 메모리 할당.
이러한 불일치를 해결하려면 참조와 포인터 사용 간의 미묘한 차이를 해결하는 것이 중요합니다. 코드가 작동하는 첫 번째 예에서 &animals를 사용하면 변수에 대한 참조가 생성되어 항상 nil이 아님을 보장합니다. 이 참조 동작은 예상되는 기능과 일치합니다.
반대로 두 번째 예에서는 Unmarshal의 관점에서 잘못된 인수를 나타내는 초기화되지 않은 포인터(*animals)를 사용합니다. 생성되는 오류는 이 문제를 정확하게 반영합니다.
마지막으로 공식 문서에 따르면 단어의 올바른 철자는 "unmarshaling"입니다.
위 내용은 초기화되지 않은 포인터를 사용할 때 `json.Unmarshal`이 `InvalidUnmarshalError`를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!