Stampa variabili Struct nella console in Go

Suraj Joshi 11 dicembre 2023
  1. Dichiara struct in Go
  2. Funzione Printf del pacchetto fmt
  3. Funzione Marshal del pacchetto encoding/json
Stampa variabili Struct nella console in Go

In Go, struct è una raccolta di diversi campi dello stesso o di diversi tipi di dati. Una struct è simile alla classe nel paradigma della programmazione orientata agli oggetti. Possiamo stampare le strutture usando la funzione Printf del pacchetto fmt insieme a tag speciali come argomenti della funzione Printf. Allo stesso modo, possiamo anche stampare strutture usando pacchetti speciali come encoding/json, go-spew e Pretty Printer Library.

Dichiara struct in Go

Le strutture in Go vengono create utilizzando la parola chiave 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)
}

Produzione:

Info of Dikhsya:  {Dikhsya Lhyaho Jhapa 123}

Possiamo stampare variabili struct con vari pacchetti in Go. Alcuni di loro sono descritti di seguito:

Funzione Printf del pacchetto fmt

Possiamo usare la funzione Printf del pacchetto fmt con una speciale opzione di formattazione. Le opzioni di formattazione disponibili per visualizzare le variabili usando fmt sono:

Formato Descrizione
%v Stampa il valore della variabile in un formato predefinito
%+v Aggiungi i nomi dei campi con il valore
%#v una rappresentazione della sintassi Go del valore
%T una rappresentazione della sintassi Go del tipo di valore
%% un segno di percentuale letterale; Non consuma alcun valore

Codici di esempio:

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

Produzione:

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

Funzione Marshal del pacchetto encoding/json

Un altro modo è usare la funzione Marshal del pacchetto 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))
}

Produzione:

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

Funzione Dump del pacchetto go-spew

Un altro modo è usare la funzione Dump del pacchetto 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)

}

Produzione:

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

Per installare il pacchetto go-spew, esegui il seguente comando nel tuo terminale:

go get -u github.com/davecgh/go-spew/spew
Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Go Struct