Open In App

Printing Struct Variables in Golang

Improve
Improve
Like Article
Like
Save
Share
Report

Suppose, we need to print the structure with its fields corresponding value. We can do this with the help of package fmt which implements formatted I/O with functions analogous to C’s printf and scanf. Let’s first try if we just print the structure, what will happen. 

Go




package main
  
import ("fmt")
  
// Fields: structure to be printed
type Fields struct {
    Name     string
    NickName string
    Age      int
}
  
func main() {
 
    // Initialising the struct with values
    var f = Fields{
    Name:     "Abc",
    NickName: "abc",
    Age:      19,
    }
 
    // printing the structure
    fmt.Println(f)
}


Output:

{Abc abc 19}

There are two ways to print Struct Variables in Golang. The first way is to use Printf function of package fmt with special tags in the arguments the printing format arguments. Some of those arguments are as below:

%v the value in a default format
%+v the plus flag adds field names
%#v a Go-syntax representation of the value

Go




package main
 
import (
    "fmt"
)
 
// Fields: structure to be printed
type Fields struct {
    Name     string
    NickName string
    Age      int
}
 
func main() {
 
    // initializing the
    // struct with values
    var f = Fields{
        Name:     "Abc",
        NickName: "abc",
        Age:      19,
    }
     
    // printing the structure
    fmt.Printf("%v\n", f)
    fmt.Printf("%+v\n", f)
    fmt.Printf("%#v\n", f)
}


Output:

{Abc abc 19}
{Name:Abc NickName:abc Age:19}
main.Fields{Name:"Abc", NickName:"abc", Age:19}

Printf with #v includes main.Fields that is the structure’s name. It includes “main” to distinguish the structure present in different packages. Second possible way is to use function Marshal of package encoding/json. Syntax :

func Marshal(v interface{}) ([]byte, error)

Go




package main
 
import (
    "encoding/json"
    "fmt"
)
 
// Fields: structure to be printed
type Fields struct {
    Name     string
    NickName string
    Age      int
}
 
func main() {
 
    // initialising the struct
    // with values
    var f = Fields{
        Name:     "Abc",
        NickName: "abc",
        Age:      19,
    }
     
    // Marshalling the structure
    // For now ignoring error
    // but you should handle
    // the error in above function
    jsonF, _ := json.Marshal(f)
 
    // typecasting byte array to string
    fmt.Println(string(jsonF))
 
}


Output:

{"Name":"Abc", "NickName":"abc", "Age":19}


Last Updated : 09 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads