YAML을 구조체로 역마샬링: 내보내지 않은 필드 이해
이 코드에서는 YAML 문서를 구성 구조체로 구문 분석하려고 합니다. 그러나 결과 구성 구조체는 {}에 표시된 대로 비어 있는 상태로 유지됩니다. 이는 구조체 필드를 내보내지 않았기 때문입니다.
해결책: 구조체 필드 내보내기
YAML 언마샬링에서는 구조체 필드를 대문자로 시작하여 내보내야 합니다. 액세스하고 채울 수 있습니다. 수정된 코드는 다음과 같습니다.
type Config struct { FooBar string `yaml:"foo_bar"` }
내보낸 필드 이해
Go에서 내보낸 필드는 선언된 패키지 외부에서 액세스할 수 있습니다. 즉, 대문자로 시작하는 필드는 다른 패키지나 코드에서 액세스할 수 있습니다. 반대로, 내보내지 않은 필드(소문자로 시작)는 동일한 패키지 내에서만 액세스할 수 있습니다.
YAML 역마샬링이 수행되면 내보낸 필드가 YAML 데이터에서 식별되고 채워집니다. 원래 필드가 내보내지지 않았기 때문에 YAML 역마샬링이 해당 필드에 액세스할 수 없었고 필드를 비워 두었습니다.
수정된 코드
내보낼 구조체 필드를 업데이트한 후 코드 YAML 데이터를 성공적으로 구문 분석하고 구성 구조체를 채웁니다.
type Config struct { FooBar string `yaml:"foo_bar"` } func main() { config := ParseYAMLConfig([]byte(configYAMLData)) fmt.Printf("%v", config) // Outputs: {https://foo.bar} }
위 내용은 내 YAML이 빈 구조체로 역마샬링되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!