¿Cómo usar etiquetas de campo en la definición de tipo de estructura en Golang?

Golang proporciona estructuras para la definición de un tipo de datos personalizado. El concepto de estructura en Go es similar a la estructura en C/C++.

Ejemplo:

type Person struct {
    Name    string
    Aadhar   int
    Street  string
    HouseNo int
}

Las estructuras en Golang se pueden escribir en archivos como JSON para almacenar datos en un disco duro o para enviarlos a través de la red. JSON es un formato ligero de almacenamiento de datos. Go proporciona paquetes en la biblioteca estándar para escribir estructuras en un archivo JSON y recuperar estructuras del archivo JSON.

Durante la definición de estructuras, se pueden agregar valores de string sin procesar adicionales conocidos como etiquetas de campo a la declaración de campo que se usa como nombre de campo en los archivos JSON. Si no se especifica un valor de string adicional, es decir, una etiqueta de campo, Go usa el nombre de campo predeterminado que se usa para declarar el campo en la estructura.

Definición de estructura con etiquetas de campo:

type Person struct {
    Name    string `json:"name"`
    Aadhar  int    `json: "aadhar"`
    Street  string `json: "street"`
    HouseNo int    `json: "house_number"`
}

Nota: el nombre del campo debe comenzar con una letra mayúscula si desea almacenar la estructura en JSON.

// Golang program to show how to use Field
// Tags in the Definition of Struct Type
package main
  
import (
    "encoding/json"
    "fmt"
)
  
type Person struct {
    Name    string `json:"name"`         // field tag for Name
    Aadhar  int    `json:"aadhar"`       // field tag for Aadhar
    Street  string `json:"street"`       // field tag for Street
    HouseNo int    `json:"house_number"` // field tag for HouseNO
}
  
func main() {
  
    var p Person
  
    p.Name = "ABCD"
    p.Aadhar = 1234123412341234
    p.Street = "XYZ"
    p.HouseNo = 10
  
    fmt.Println(p)
  
    // returns []byte which is p in JSON form.
    jsonStr, err := json.Marshal(p)
    if err != nil {
        fmt.Println(err.Error())
    }
  
    fmt.Println(string(jsonStr))
  
    // Sample JSON data
    var str = `{ 
        "name" : "PQRX",
        "aadhar" : 1234123412341234,
        "street" : "XYZW",
        "house_number" : 10
    }`
  
    var p2 Person
  
    // retains values of fields from JSON string
    err = json.Unmarshal([]byte(str), &p2)
    // and stores it into p2
    if err != nil {
        fmt.Println(err.Error())
    }
  
    fmt.Println(p2)
}

Producción:

{ABCD 1234123412341234 XYZ 10}
{"name":"ABCD","aadhar":1234123412341234,"street":"XYZ","house_number":10}
{PQRX 1234123412341234 XYZW 10}

Publicación traducida automáticamente

Artículo escrito por akritya3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *