Cómo imprimir variables estructurales en la consola
En Go, struct
es una colección de diferentes campos del mismo o diferentes tipos de datos. Una struct
es similar a la clase del paradigma de Programación Orientada a Objetos. Podemos imprimir las structs usando la función Printf
del paquete fmt
junto con etiquetas especiales como argumentos para la función Printf
. Del mismo modo, también podemos imprimir las structs usando paquetes especiales como encoding/json
, go-spew
, y Pretty Printer Library
.
Declarar struct
en Go
Las estructuras en Go se crean usando la palabra clave struct
.
package main
import "fmt"
type info struct {
Name string
Address string
Pincode int
}
func main() {
a1 := info{"Dikhsya Lhyaho", "Jhapa", 123}
fmt.Println("Info of Dikhsya: ", a1)
}
Producción :
Info of Dikhsya: {Dikhsya Lhyaho Jhapa 123}
Podemos imprimir las variables struct
con varios paquetes en Go. Algunos de ellos se describen a continuación:
Función Printf
del paquete fmt
Podemos usar la función Printf
del paquete fmt
con una opción de formato especial. Las opciones de formato disponibles para mostrar las variables usando fmt
son:
Formato | Descripción |
---|---|
%v |
Imprimir el valor de la variable en un formato predeterminado |
%+v |
Añade los nombres de los campos con el valor |
%#v |
una representación de la sintaxis de Go del valor |
%T |
una representación de la sintaxis Go del tipo de valor |
%% |
un signo de porcentaje literal; no consume ningún valor |
Códigos de ejemplo:
package main
import "fmt"
type Employee struct {
Id int64
Name string
}
func main() {
Employee_1 := Employee{Id: 10, Name: "Dixya Lhyaho"}
fmt.Printf("%+v\n", Employee_1) // with Variable name
fmt.Printf("%v\n", Employee_1) // Without Variable Name
fmt.Printf("%d\n", Employee_1.Id)
fmt.Printf("%s\n", Employee_1.Name)
}
Producción :
{Id:10 Name:Dixya Lhyaho}
{10 Dixya Lhyaho}
10
Dixya Lhyaho
Función Marshall
del paquete encoding/json
Otra forma es usar la función Marshal
del paquete encoding/json
.
package main
import (
"encoding/json"
"fmt"
)
type Employee struct {
Id int64
Name string
}
func main() {
Employee_1 := Employee{Id: 10, Name: "Dixya Lhyaho"}
jsonE, _ := json.Marshal(Employee_1)
fmt.Println(string(jsonE))
}
Producción :
{"Id":10,"Name":"Dixya Lhyaho"}
Función Dump
del paquete go-spew
Otra forma es usar la función Dump
del paquete go-spew
.
.
package main
import (
"github.com/davecgh/go-spew/spew"
)
type Employee struct {
Id int64
Name string
}
func main() {
Employee_1 := Employee{Id: 10, Name: "Dixya Lhyaho"}
spew.Dump(Employee_1)
}
Producción :
(main.Employee) {
Id: (int64) 10,
Name: (string) (len=12) "Dixya Lhyaho"
}
Para instalar el paquete go-spew
ejecute el siguiente comando en su terminal:
go get -u github.com/davecgh/go-spew/spew
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn