Introduction

Structs are a composite data type in Go used to create custom data structures that group related variables under a single type. In this guide, we'll explore how to define and work with structs, providing sample code to demonstrate their usage.


Defining Structs

In Go, you can define a struct using the type keyword followed by the struct's name and a list of fields. Here's an example:

package main
import "fmt"
// Define a struct named "Person" with fields "Name" and "Age".
type Person struct {
Name string
Age int
}
func main() {
// Create an instance of the "Person" struct.
person := Person{
Name: "Alice",
Age: 30,
}
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
}

In this code, we define a struct called "Person" with two fields: "Name" and "Age." We then create an instance of the "Person" struct and access its fields.


Anonymous Structs

Go allows you to create anonymous structs, which are structs without a predefined name. They are useful for one-time data grouping. Here's an example:

package main
import "fmt"
func main() {
// Create an anonymous struct.
person := struct {
Name string
Age int
}{
Name: "Bob",
Age: 25,
}
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
}

In this code, we create an anonymous struct to represent a person and access its fields.


Methods on Structs

You can define methods for your custom struct types in Go. Methods are functions associated with a struct, and they enable you to perform operations on struct instances. Here's an example:

package main
import "fmt"
type Rectangle struct {
Width float64
Height float64
}
// Define a method "Area" for the "Rectangle" struct.
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
func main() {
rect := Rectangle{Width: 5, Height: 3}
area := rect.Area()
fmt.Println("Rectangle Area:", area)
}

In this code, we define a method called "Area" for the "Rectangle" struct to calculate the area of a rectangle.


Further Resources

To continue learning about Go structs and custom data types, consider these resources: