Cómo imprimir variables estructurales en la consola

  1. Declarar struct en Go
  2. Función Printf del paquete fmt
  3. Función Marshall del paquete encoding/json

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
comments powered by Disqus