Structs and Fields

In Go, a group of related variables can be defined as a struct. Each variable within a struct is known as a field.

Struct Definition

In Go, a struct must be defined before it can be used in a program. The definition of a struct includes its name and its fields.

type Point struct{ x int y int }

Struct Instances

In Go, an instance of a defined struct can be created by providing its name followed by a set of curly braces with optional values.

p1 := Point{x: 10, y: 12}

Struct Methods

In Go, methods can be associated with a struct by naming a struct parameter in parentheses before the function name.

func (rectangle Rectangle) area() float32{ return rectangle.length * rectangle.height } func main() { rect.area() }

Access Struct Fields

In Go, fields within a struct can be accessed or modified using the . operator.

p1 := Point{x:10, y:12} fmt.Println(p1.x)

Passing Structs as Pointers

In Go, the values of a struct can only be modified in a function if the struct is passed as a pointer.

func (rectangle *Rectangle) modify(newLength float32){ rectangle.length = newLength }

Access Pointer Struct Fields

In Go, accessing the fields of a pointer to a struct does not require dereferencing. The fields of the struct pointer can be accessed using the normal . syntax.

steve := Employee{“Steve”, “Stevens”, 34, “Junior Manager”} pointerToSteve := &steve fmt.Println(pointerToSteve.firstName)

Arrays of Structs

In Go, arrays can be used to store many of the same struct’s instances.

points := []Point{{1, 1}, {7, 27}, {12, 7}, {9, 25}}

Nested Structs

In Go, a struct can contain fields that are themselves other structs.

type Name struct{ firstName string lastName string } type Employee struct{ name Name age int title string }