How to Print Struct Variables in Console in Go
In Go, struct
is a collection of different fields of the same or different data types. A struct
is similar to the class in the Object-Oriented Programming paradigm. We can print structs using Printf
function of package fmt
along with special tags as arguments to Printf
function. Similarly, we can also print structs using special packages such as encoding/json
, go-spew
, and Pretty Printer Library
.
Declare struct
in Go
Structures in Go are created using the struct
keyword.
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)
}
Output:
Info of Dikhsya: {Dikhsya Lhyaho Jhapa 123}
We can print struct
variables with various packages in Go. Some of them are described below:
Printf
Function of fmt
Package
We can use the Printf
function of package fmt
with a special formatting option. The available formatting options to display variables using fmt
are:
Format | Description |
---|---|
%v |
Print the variable value in a default format |
%+v |
Add field names with the value |
%#v |
a Go-syntax representation of the value |
%T |
a Go-syntax representation of the type of the value |
%% |
a literal percent sign; It consumes no value |
Example Codes:
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)
}
Output:
{Id:10 Name:Dixya Lhyaho}
{10 Dixya Lhyaho}
10
Dixya Lhyaho
Marshal
Function of Package encoding/json
Another way is to use the function Marshal
of package 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))
}
Output:
{"Id":10,"Name":"Dixya Lhyaho"}
Dump
Function of Package go-spew
Another way is to use the Dump
function of package 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)
}
Output:
(main.Employee) {
Id: (int64) 10,
Name: (string) (len=12) "Dixya Lhyaho"
}
To install the go-spew
package run the following command in your terminal:
go get -u github.com/davecgh/go-spew/spew
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn