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