Pointers
Pointers hold memory addresses. Instead of copying a value, you point to where it lives.
The type *T is a pointer to a T value. Its zero value is nil.
var p *int
Use & to get a pointer to a variable:
i := 42
p = &i
Use * to read or write through that pointer — this is called dereferencing:
fmt.Println(*p) // read i through the pointer p
*p = 21 // set i through the pointer p
One thing Go doesn’t have: pointer arithmetic. No p++ tricks like in C.