Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

How to Assign Default Value for Struct Field in Golang?

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Default values can be assigned to a struct by using a constructor function. Rather than creating a structure directly, we can use a constructor to assign custom default values to all or some of its members.

Example 1:




// Golang program to assign
// default values to a struct 
// using constructor function
package main
  
import (
    "fmt"
)
  
// declaring a student struct
type Student struct{
      
    // declaring struct variables
    name string
    marks int64
    age int64
}
  
// constructor function
func(std *Student) fill_defaults(){
  
    // setting default values
    // if no values present
    if std.name == "" {
        std.name = "ABC"
    }
      
    if std.marks == 0 {
        std.marks = 40
    }
      
    if std.age == 0 {
        std.age = 18
    }
}
  
// main function
func main() {
  
    // creating a struct where
    // only the name is initialised
    std1 := Student{name: "Vani"}
      
    // printing the struct 
    // with no default values
    fmt.Println(std1)
      
    // this will assign default values 
    // to non-initialised valiables
    // in struct std1
    std1.fill_defaults()
      
    // printing after assigning
    // defaults to struct variables
    fmt.Println(std1)
      
    // creating a struct where
    // age and marks are initialised
    std2 := Student{age: 19, marks: 78}
      
    // assigning default name
    std2.fill_defaults()
      
    // printing after assigning 
    // default name to struct
    fmt.Println(std2)
      
}

Output:

{Vani 0 0}
{Vani 40 18}
{ABC 78 19}

Another way of assigning default values to structs is by using tags. Tags can only be used for string values only and can be implemented by using single quotes(”).

Example 2:




// Golang program to assign
// default values to a struct 
// using tags
  
package main
  
import (
    "fmt"
    "reflect"
)
  
// declaring a person struct
type Person struct {
  
    // setting the default value 
    // of name to "geek"
      name string `default:"geek"
  
}
  
func default_tag(p Person) string {
  
    // TypeOf returns type of 
    // interface value passed to it
      typ := reflect.TypeOf(p)
  
    // checking if null string
      if p.name == "" {
          
        // returns the struct field 
        // with the given parameter "name"
            f, _ := typ.FieldByName("name")
          
        // returns the value associated 
        // with key in the tag string
        // and returns empty string if 
        // no such key in tag
            p.name = f.Tag.Get("default")
      }
  
      return fmt.Sprintf("%s", p.name)
}
  
// main function
func main(){
  
    // prints out the default name 
    fmt.Println("Default name is:", default_tag(Person{}))
}

Output:

Default name is: geek

My Personal Notes arrow_drop_up
Last Updated : 22 Jun, 2020
Like Article
Save Article
Similar Reads
Related Tutorials