> 백엔드 개발 > Golang > Go에서 YAML 파일을 어떻게 구문 분석하나요?

Go에서 YAML 파일을 어떻게 구문 분석하나요?

Linda Hamilton
풀어 주다: 2024-11-29 06:07:12
원래의
596명이 탐색했습니다.

How do I Parse YAML Files in Go?

Go에서 YAML 파일 구문 분석

Go에서 YAML 파일을 구문 분석하려면 데이터 구조와 이를 표현하는 데 적합한 데이터 유형을 이해해야 합니다.

예: 방화벽 네트워크 규칙 파일 구문 분석

다음 YAML 파일을 고려하세요. 방화벽 네트워크 규칙 사용:

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
로그인 후 복사

이 파일을 구문 분석하기 위해 YAML 콘텐츠를 나타내는 Config 구조체를 정의합니다.

type Config struct {
    Firewall_network_rules map[string][]string
}
로그인 후 복사

그런 다음 yaml 패키지를 사용하여 다음을 수행합니다. YAML 파일을 Config 구조체로 역마샬링합니다.

func main() {
    filename, _ := filepath.Abs("./fruits.yml")
    yamlFile, err := ioutil.ReadFile(filename)

    if err != nil {
        panic(err)
    }

    var config Config

    err = yaml.Unmarshal(yamlFile, &config)
    if err != nil {
        panic(err)
    }

    fmt.Printf("Value: %#v\n", config.Firewall_network_rules)
}
로그인 후 복사

이 접근 방식은 YAML 파일이 다음을 사용하기 때문에 작동합니다. Config 구조체에 해당하는 중첩 맵 구조.

예: 서비스 YAML 파일 구문 분석

Kubernetes 서비스 매니페스트와 같이 더 복잡한 YAML 파일을 구문 분석하기 위해 더 복잡한 YAML 파일을 생성합니다. struct:

type Service struct {
    APIVersion string `yaml:"apiVersion"`
    Kind       string `yaml:"kind"`
    Metadata   struct {
        Name      string `yaml:"name"`
        Namespace string `yaml:"namespace"`
        Labels    struct {
            RouterDeisIoRoutable string `yaml:"router.deis.io/routable"`
        } `yaml:"labels"`
        Annotations struct {
            RouterDeisIoDomains string `yaml:"router.deis.io/domains"`
        } `yaml:"annotations"`
    } `yaml:"metadata"`
    Spec struct {
        Type     string `yaml:"type"`
        Selector struct {
            App string `yaml:"app"`
        } `yaml:"selector"`
        Ports []struct {
            Name       string `yaml:"name"`
            Port       int    `yaml:"port"`
            TargetPort int    `yaml:"targetPort"`
            NodePort   int    `yaml:"nodePort,omitempty"`
        } `yaml:"ports"`
    } `yaml:"spec"`
}
로그인 후 복사

그런 다음 YAML 파일을 다음으로 역마샬링합니다. struct:

var service Service

err = yaml.Unmarshal(yourFile, &service)
if err != nil {
    panic(err)
}

fmt.Print(service.Metadata.Name)
로그인 후 복사

YAML 구조와 일치하는 적절한 구조체를 사용하면 Go에서 복잡한 YAML 데이터를 효과적으로 구문 분석하고 표현할 수 있습니다.

위 내용은 Go에서 YAML 파일을 어떻게 구문 분석하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿