먼저 Go는 대소문자 표기 규칙을 활용하여 패키지 내의 개인 식별자와 공용 식별자를 구별합니다. 제공된 예에서 Machine 구조체의 필드(m_ip, m_type 및 m_serial)는 비공개입니다. 따라서 정의된 패키지 외부의 json.Marshal과 같은 외부 라이브러리에 액세스할 수 없습니다.
두 번째 코드 조각에서 필드 이름을 대문자(MachIp, MachType 및 MachSerial)로 변경하면, 공개되어 내보낼 수 있습니다. 이를 통해 json.Marshal은 JSON 표현을 성공적으로 생성할 수 있습니다.
그러나 소문자 필드 이름을 사용하려는 경우 필드 태그를 활용하여 원하는 JSON 필드 이름을 수동으로 지정할 수 있습니다. 예를 들면 다음과 같습니다.
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
json 태그로 필드에 주석을 추가하면 기본적으로 JSON 출력을 생성하는 동안 지정된 필드 이름을 활용하도록 JSON 인코더에 지시하게 됩니다.
위 내용은 Go의 `json.Marshal`이 소문자 필드 이름이 포함된 구조체와 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!