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}