Go Structs

Defining and using structs in Go

Struct Definition

type Person struct { # define struct
    Name string # exported field (capitalized)
    Age  int
    city string # unexported field (lowercase)
}

Creating Structs

p1 := Person{Name: "John", Age: 30} # named fields
p2 := Person{"Alice", 25, "NYC"} # positional
var p3 Person # zero values
p4 := new(Person) # returns pointer

Accessing Fields

name := p1.Name # access field
p1.Age = 31 # modify field
ptr := &p1 # get pointer
ptr.Name = "Bob" # modify via pointer

Methods

func (p Person) Greet() { # value receiver
    fmt.Println("Hello", p.Name)
}
func (p *Person) Birthday() { # pointer receiver
    p.Age++ # modifies original
}

Embedded Structs

type Address struct {
    City, Country string
}
type Employee struct {
    Person # embedded struct
    Address
    Salary int
}
e := Employee{} # access: e.Name, e.City