Analisando um arquivo YAML em Go
A análise de arquivos YAML em Go envolve a utilização da biblioteca YAML disponível em gopkg.in/yaml.v2. O código fornecido foi projetado para analisar um arquivo YAML com pares de valores-chave aninhados, como o seguinte:
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
No entanto, surgem problemas ao tentar analisar pares de valores-chave sem valores acompanhantes. A estrutura implementada não define esses valores, levando a um erro durante a análise.
Para resolver esse problema, considere incorporar um exemplo YAML do mundo real, como service.yaml do Google Cloud ou Kubernetes:
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
Este exemplo demonstra relações de valor-chave aninhadas e fornece um caso de uso prático. A estrutura Go correspondente seria semelhante a:
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"` } }
Para simplificar o processo, serviços como yaml-to-go e json-to-go fornecem ferramentas convenientes para converter estruturas YAML em Go, tornando a tarefa de análise mais gerenciável.
Finalmente, para desempacotar o arquivo YAML em sua estrutura, você pode usar o seguinte código:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
Essa abordagem permite o acesso aos dados analisados por meio da estrutura de serviço, permitindo que você interaja com as informações do arquivo YAML em seu aplicativo Go.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3