Go Structures

Go Structure is a datatype that allows you to store different properties under a single variable name. It is similar to a class, in object oriented programming, that has only properties. It is very similar to structure in C programming.

In this tutorial, we will learn how to define a structure, declare variables of this structure type and initialize structure variables.

Declare Structure

To declare a structure in Go, use the keywords type and struct.

The syntax to declare a structure is

type struct_name struct {
   member definition;
   member definition;
   ...
   member definition;
}

The following is an example, to declare student structure datatype with properties: name and rollNumber.

example.go

package main

type student struct {
   name string
   rollNumber int
}

func main() {

}
ADVERTISEMENT

Declare Variables of the Structure Datatype

Now we will declare variables of the structure datatype that is declared above.

example.go

package main

type student struct {
   name string
   rollNumber int
}

func main() {
	// declare variables of Student type
	var student1 student
	var student2 student
}

Initialize Structure Datatype Variables

We can either initialize the structure variable during its declaration or in another statement.

example.go

package main

type student struct {
   name string
   rollNumber int
}

func main() {
	// intialize during declaration
	var student1 = student{name:"A", rollNumber:14}
	var student2 student
	// intialize explicitly
	student2 = student{name:"B", rollNumber:13}
}

Access Structure Members

To access members of a structure, use dot . operator. You can access a specific member by writing structure variable, followed by dot and then the member variable name.

In the following example, we have used dot operator to set the value of member of the structure variable and also to get the value of a member.

example.go

package main

import "fmt"

type student struct {
   name string
   rollNumber int
}

func main() {
	var student1 = student{name:"Anu", rollNumber:14}
	// get the member value
	fmt.Printf("student1 details\n--------------\n")
	fmt.Printf("Name : %s\n", student1.name)
	fmt.Printf("Rollnumber : %d\n", student1.rollNumber)
	
	var student2 = student{name:"Arjit", rollNumber:13}
	// set the member value
	student2.rollNumber=24
	student2.name = "Bungi"
	
	fmt.Printf("\nstudent2 details\n--------------\n")
	fmt.Printf("Name : %s\n", student2.name)
	fmt.Printf("Rollnumber : %d\n", student2.rollNumber)
}

Output

student1 details
--------------
Name : Anu
Rollnumber : 14

student2 details
--------------
Name : Bungi
Rollnumber : 24

Methods on Struct

You can associate behavior as well to structs, in addition to properties, in the form of functions. In the following example, we have a struct defined, and an associated method to the Student struct.

example.go

package main

import "fmt"

// struct definition
type Student struct {
   name string
   rollNumber int
}

// associate method to Strudent struct type
func (s Student) PrintDetails() {
	fmt.Println("Student Details\n---------------")
	fmt.Println("Name :", s.name)
	fmt.Println("Roll Number :", s.rollNumber)
}

func main() {
	var stud1 = Student{name:"Anu", rollNumber:14} 
	stud1.PrintDetails()
}

Output

Student Details
---------------
Name : Anu
Roll Number : 14

Conclusion

In this Golang Tutorial, we learned what a structure is in Go programming, and how to use it, with the help of examples.