Como Imprimir Variáveis de Estruturas em Console do Go

  1. Declare Estruturar em Go
  2. Função do pacote fmt
  3. Função do pacote encoding/json

Em Go, struct é uma coleção de diferentes campos do mesmo tipo de dados ou de diferentes tipos. Um struct é semelhante à classe no paradigma de Programação Orientada a Objetos. Podemos imprimir estruturas utilizando a função Printf do pacote fmt junto com tags especiais como argumentos para a função Printf. Da mesma forma, também podemos imprimir estruturas utilizando pacotes especiais como encoding/json, go-spew, e Pretty Printer Library.

Declare Estruturar em Go

As estruturas em Go são criadas utilizando a palavra-chave 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)
}

Resultado:

Info of Dikhsya:  {Dikhsya Lhyaho Jhapa 123}

Podemos imprimir variáveis de struct com vários pacotes em Go. Algumas delas são descritas abaixo:

Função do pacote fmt

Podemos utilizar a função Printf da embalagem fmt com uma opção especial de formatação. As opções de formatação disponíveis para exibir variáveis utilizando o fmt são:

Formato Descrição
%v Imprimir o valor da variável em um formato padrão
%+v Adicionar nomes de campo com o valor
%#v uma representação do valor da sintaxe
%T uma representação do tipo de valor, por meio de sintaxe
%% um sinal literal de porcentagem; não consome nenhum valor

Códigos de exemplo:

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)
}

Resultado:

{Id:10 Name:Dixya Lhyaho}
{10 Dixya Lhyaho}
10
Dixya Lhyaho

Função do pacote encoding/json

Outra maneira é utilizar a função Marshal de 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))
}

Resultado:

{"Id":10,"Name":"Dixya Lhyaho"}

Função Dump do pacote go-spew

Outra maneira é utilizar a função Dump do pacote 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)

}

Resultado:

(main.Employee) {
 Id: (int64) 10,
 Name: (string) (len=12) "Dixya Lhyaho"
}

Para instalar o pacote go-spew, execute o seguinte comando em seu terminal:

go get -u github.com/davecgh/go-spew/spew

Artigo relacionado - Go Struct

  • Como converter a estrutura de Go para JSON