>백엔드 개발 >Golang >내 YAML이 빈 구조체로 역마샬링되는 이유는 무엇입니까?

내 YAML이 빈 구조체로 역마샬링되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-20 02:24:08599검색

Why is my YAML unmarshaling to an empty struct?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.