Analizar un archivo YAML en Go
Analizar archivos YAML en Go implica utilizar la biblioteca YAML disponible a través de gopkg.in/yaml.v2. El código proporcionado está diseñado para analizar un archivo YAML con pares clave-valor anidados, como el siguiente:
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
Sin embargo, surgen problemas al intentar analizar pares clave-valor sin valores que los acompañen. La estructura implementada no define estos valores, lo que genera un error durante el análisis.
Para solucionar este problema, considere incorporar un ejemplo YAML del mundo real, como service.yaml de Google Cloud o 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 ejemplo demuestra relaciones clave-valor anidadas y proporciona un caso de uso práctico. La estructura Go correspondiente se parecería 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 el proceso, servicios como yaml-to-go y json-to-go proporcionan herramientas convenientes para convertir YAML en estructuras Go, lo que hace que la tarea de análisis sea más manejable.
Finalmente, Para descomponer el archivo YAML en su estructura, puede usar el siguiente código:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
Este enfoque permite el acceso a los datos analizados a través de la estructura de servicio, lo que le permite interactuar con la información del archivo YAML en su aplicación Go.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3