A struct is a custom type that groups related data into named fields, with no inheritance. You create one with a composite literal, either by field name or by position in field order. Field names are safer, because adding a field later does not break the code.
Access fields with a dot. Go dereferences a struct pointer for you, so p3.Name works on &Person{...}. Fields you leave out get their zero values. Structs are values, so assigning one copies all of its fields.
type Person struct {
Name string
Age int
City string
}
// Creating struct instances
p1 := Person{Name: "Alice", Age: 30, City: "NYC"}
p2 := Person{"Bob", 25, "LA"} // positional
p3 := &Person{Name: "Charlie", Age: 35} // pointer to struct
// Accessing fields
fmt.Println(p1.Name)
p1.Age = 31
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓