Como Imprimir Variáveis de Estruturas em Console do Go

Suraj Joshi 11 dezembro 2023 Go Go Struct
  1. Declare Estruturar em Go
  2. Função do pacote fmt
  3. Função do pacote encoding/json
Como Imprimir Variáveis de Estruturas em Console do Go

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
Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Go Struct