0% found this document useful (0 votes)
16 views2 pages

Go by Example - Structs

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views2 pages

Go by Example - Structs

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Go by Example: Structs https://gobyexample.

com/structs

Go by Example: Structs
Go’s structs are typed collections of fields. They’re
useful for grouping data together to form records.

package main

import "fmt"

This person struct type has name and age fields. type person struct {
name string
age int
}

newPerson constructs a new person struct with the func newPerson(name string) *person {
given name.

Go is a garbage collected language; you can safely p := person{name: name}


return a pointer to a local variable - it will only be p.age = 42
cleaned up by the garbage collector when there return &p
}
are no active references to it.

func main() {

This syntax creates a new struct. fmt.Println(person{"Bob", 20})

You can name the fields when initializing a struct. fmt.Println(person{name: "Alice", age: 30})

Omitted fields will be zero-valued. fmt.Println(person{name: "Fred"})

An & prefix yields a pointer to the struct. fmt.Println(&person{name: "Ann", age: 40})

It’s idiomatic to encapsulate new struct creation in fmt.Println(newPerson("Jon"))


constructor functions

Access struct fields with a dot. s := person{name: "Sean", age: 50}


fmt.Println(s.name)

You can also use dots with struct pointers - the sp := &s
pointers are automatically dereferenced. fmt.Println(sp.age)

Structs are mutable. sp.age = 51


fmt.Println(sp.age)

If a struct type is only used for a single value, we dog := struct {


don’t have to give it a name. The value can have name string
an anonymous struct type. This technique is isGood bool
}{
commonly used for table-driven tests.
"Rex",
true,
}
fmt.Println(dog)
}

$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51
{Rex true}

Next example: Methods.

1 of 2 11/26/24, 23:34
Go by Example: Structs https://gobyexample.com/structs

by Mark McGranaghan and Eli Bendersky | source | license

2 of 2 11/26/24, 23:34

You might also like