Go에서 중첩된 키-값 쌍을 사용하여 YAML 파일을 구문 분석하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-10 22:05:02
원래의
327명이 탐색했습니다.

How to Parse a YAML File with Nested Key-Value Pairs in Go?

Go에서 YAML 파일 구문 분석

Go에서 YAML 파일을 구문 분석하려면 gopkg.in/yaml.v2를 통해 제공되는 YAML 라이브러리를 활용해야 합니다. 제공된 코드는 다음과 같이 중첩된 키-값 쌍이 있는 YAML 파일을 구문 분석하도록 설계되었습니다.

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

그러나 값을 동반하지 않고 키-값 쌍을 구문 분석하려고 하면 문제가 발생합니다. 구현된 구조체는 이러한 값을 정의하지 않으므로 구문 분석 중에 오류가 발생합니다.

이 문제를 해결하려면 Google Cloud 또는 Kubernetes의 service.yaml과 같은 실제 YAML 예시를 통합하는 것이 좋습니다.

apiVersion: v1
kind: Service
metadata:
  name: myName
  namespace: default
  labels:
    router.deis.io/routable: "true"
  annotations:
    router.deis.io/domains: ""
spec:
  type: NodePort
  selector:
    app: myName
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
로그인 후 복사

이 예시는 중첩된 키-값 관계와 실제 사용 사례를 제공합니다. 해당 Go 구조체는 다음과 같습니다.

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"`
    }
    Spec struct {
        Type     string `yaml:"type"`
        Selector struct {
            App string `yaml:"app"`
        }
        Ports []struct {
            Name       string `yaml:"name"`
            Port       int    `yaml:"port"`
            TargetPort int    `yaml:"targetPort"`
            NodePort   int    `yaml:"nodePort,omitempty"`
        } `yaml:"ports"`
    }
}
로그인 후 복사

프로세스를 단순화하기 위해 yaml-to-go 및 json-to-go와 같은 서비스는 YAML을 Go 구조체로 변환하는 편리한 도구를 제공하여 구문 분석 작업을 보다 쉽게 ​​관리할 수 있도록 합니다. .

마지막으로 YAML 파일을 구조체로 역마샬링하려면 다음을 사용할 수 있습니다. 코드:

var service Service

err := yaml.Unmarshal(yourFile, &service)
if err != nil {
    panic(err)
}
로그인 후 복사

이 접근 방식을 사용하면 서비스 구조를 통해 구문 분석된 데이터에 액세스할 수 있으므로 Go 애플리케이션에서 YAML 파일 정보와 상호 작용할 수 있습니다.

위 내용은 Go에서 중첩된 키-값 쌍을 사용하여 YAML 파일을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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