Golang Yaml

Golang Yaml
Otro lenguaje de marcado o Yaml para abreviar es una serialización de datos con un fuerte énfasis en la legibilidad humana. A menudo se usa como lenguaje de configuración para herramientas y aplicaciones principales, registros de depuración, encabezados de documentos, etc.

Con su aumento en los últimos años, aprender a trabajar con archivos YAML puede ser muy beneficioso. En este artículo, aprenderemos cómo trabajar con el archivo YAML usando el YAML.Paquete V3 en Go.

Paquete Golang Yaml

Para trabajar con Yaml en Go, usamos el Yaml.Paquete V3. Proporciona herramientas y métodos para realizar la codificación y decodificación de datos YAML.

Para instalar el paquete, ejecute el comando Go Get como:

Ve a buscar gopkg.en/yaml.v3

Una vez instalado, puede importar el paquete como se muestra:

importar "gopkg.en/yaml.V3 "

Golang lee Yaml

Comencemos por discutir cómo leer los archivos YAML en GO. Supongamos que tenemos un archivo de muestra YAML como se muestra a continuación:

Artículo1: 100
Artículo2: 40
item3: 22
item4: 50
item5: 323

Podemos usar el archivo YAML utilizando el método unmarshal. Un código de ejemplo es como se muestra a continuación:

paquete principal
importar (
"FMT"
"Io/Ioutil"
"registro"
"gopkg.en/yaml.V3 "
)
funcmain ()
archivo, err: = ioutil.Readfile ("Usuarios.Yaml ")
Si err != nulo
registro.Fatal (err)

Data: = make (map [interfaz ] interfaz )
Error: = Yaml.Unmarshal ([] byte (archivo) y datos)
Si Error != nulo
registro.Fatal (err)

para clave, valor: = datos de rango
fmt.Printf (" %s: %d \ n", clave, valor)

En el código de ejemplo anterior, leemos el archivo usando el Ioutil.Método readfile (). Luego creamos un mapa para almacenar los datos de la interfaz de tipo, la interfaz.

Luego solteramos los datos del archivo utilizando el método Usando el método Unmarshal. Finalmente, iteramos sobre las teclas y los valores del mapa utilizando el operador de rango.

El código anterior debería devolver:

Artículo1: 100
Artículo2: 40
item3: 22
item4: 50
item5: 323

Supongamos que tiene un archivo YAML anidado como se muestra:

Dev1:
Nombre: John Creese
Departamento: desarrollador de juegos
Dev2:
Nombre: Emma Rin
Departamento: Desarrollador de DevOps
Dev3:
Nombre: Sammuelmwese
Departamento: Desarrollador de extremo de backs

Para eso, podemos usar la estructura para almacenar la información como se muestra:

Escriba la estructura de usuario
Cadena de nombre
Cadena de departamento

A continuación, podemos realizar una operación simple y unmarshal como:

paquete principal
importar (
"FMT"
"Io/Ioutil"
"registro"
"gopkg.en/yaml.V3 "
)
Escriba la estructura de usuario
Cadena de nombre
Cadena de departamento

funcmain ()
archivo, err: = ioutil.Readfile ("Usuarios.Yaml ")
Si err != nulo
registro.Fatal (err)

Datos: = make (map [string] usuario)
err1: = yaml.Unmarshal (archivo y datos)
Si err1 != nulo
registro.Fatal (err1)

para clave, valor: = datos de rango
fmt.Println (clave, valor)

El código anterior debe devolver una salida como:

Dev1 John Creese Game Developer
Dev2 Emma Rin DevOps Developer
Dev3 desarrollador de extremo de bache Sammuel Mwese

Golang escribe yaml

Para escribir el archivo YAML, podemos usar el método Marshal. Un ejemplo es como se muestra a continuación:

paquete principal
importar (
"FMT"
"Io/Ioutil"
"registro"
"gopkg.en/yaml.V3 "
)
funcmain ()
Fruits: = [...] cadena "manzana", "naranja", "mango", "fresa"
datos, err: = yaml.Mariscal (frutas)
Si err != nulo
registro.Fatal (err)

err1: = ioutil.WriteFile ("frutas.yaml ", datos, 0644)
Si err1 != nulo
registro.Fatal (err1)

fmt.Println ("éxito!")

En el ejemplo anterior, utilizamos el método Marshal para serializar la porción de las cuerdas en YAML. Luego usamos los datos serializados y los escribimos en un archivo.

Si el archivo no existe, el código debe crearlo con el permiso especificado y escribirlo. Ejecutar el programa anterior debe devolver:

$ Go Run Main.ir

Éxito!

Clausura

Este tutorial cubrió los conceptos básicos de leer y escribir archivos YAML en Go Usando el YAML.Paquete V3. Consulte los documentos para obtener más información.