A struct is used to store variables of different data types. For example,
Suppose we want to store the name and age of a person. We can create two variables: name and age and store value.
However, suppose we want to store the same information of multiple people.
In this case, creating variables for a person might be a tedious task. We can create a struct that stores the name and age to overcome this.
And, we can use this same struct for every person.
Declare Go Struct
The syntax to declare a struct in Go is:
type StructureName struct {
// structure definition
}
Here,
struct- keyword used to define a structureStructName- the name of the structure
Let's see an example,
type Person struct {
name string
age int
}
Here, we have declared a struct named Person. Inside the curly braces {}, the struct contains two variables name and age.
Struct instances
A struct definition is just a blueprint. To use a struct, we need to create an instance of it. For example,
type Person struct {
name string
age int
}
// create an instance of struct
var person1 Person
Here, we have created an instance person1 followed by the name of the struct Person.
Now, we can use the person1 instance to access and define the struct properties.
// define the value of name and age
person1 = Person("John", 25)
We can also directly define a struct while creating an instance of the struct. For example,
person1 := Person("John", 25)
Here, John will be assigned to the name variable and 25 will be assigned to the age variable of the Person struct.
Example: Golang struct
package main
import "fmt"
func main() {
// declare a struct
type Person struct {
name string
age int
}
// assign value to struct while creating an instance
person1 := Person{ "John", 25}
fmt.Println(person1)
// define an instance
var person2 Person
// assign value to struct variables
person2 = Person {
name: "Sara",
age: 29,
}
fmt.Println(person2)
}
Output
{John 25}
{Sara 29}
Access a struct in Golang
We can access individual elements of a struct using the struct instances. For example,
// Program to access the individual elements of struct
package main
import "fmt"
func main() {
// declare a struct
type Rectangle struct {
length int
breadth int
}
// declare instance rect1 and defining the struct
rect := Rectangle{22, 12}
// access the length of the struct
fmt.Println("Length:", rect.length)
// access the breadth of the struct
fmt.Println("Breadth:", rect.breadth)
area := rect.length * rect.breadth
fmt.Println("Area:", area)
}
Output
Length: 22 Breadth: 12 Area: 264
Here, we have used the . (dot) symbol to access the property of a struct.
rect.length- access the value of the length variable from the structrect.breadth- access the value of the breadth variable from the struct
Function inside a Struct in Go
Go also allows us to create a function inside a struct. It treats function as a field of struct. For example,
// Program to use function as a field of struct
package main
import "fmt"
// initialize the function Rectangle
type Rectangle func(int, int) int
// create structure
type rectanglePara struct {
length int
breadth int
color string
// function as a field of struct
rect Rectangle
}
func main() {
// assign values to struct variables
result := rectanglePara{
length: 10,
breadth: 20,
color: "Red",
rect: func(length int, breadth int) int {
return length * breadth
},
}
fmt.Println("Color of Rectangle: ", result.color)
fmt.Println("Area of Rectangle: ", result.rect(result.length, result.breadth))
}
Output
Color of Rectangle: Red Area of Rectangle: 200
In the above example, we have defined a function Rectangle as a field of struct rectanglePara and used the function to find the area of a rectangle.