Go dengan Contoh: Pointer (Pointers)

Go supports pointers, allowing you to pass references to values and records within your program.

package main
import "fmt"

We’ll show how pointers work in contrast to values with 2 functions: zeroval and zeroptr. zeroval has an int parameter, so arguments will be passed to it by value. zeroval will get a copy of ival distinct from the one in the calling function.

func zeroval(ival int) {
    ival = 0
}

zeroptr in contrast has an *int parameter, meaning that it takes an int pointer. The *iptr code in the function body then dereferences the pointer from its memory address to the current value at that address. Assigning a value to a dereferenced pointer changes the value at the referenced address.

func zeroptr(iptr *int) {
    *iptr = 0
}
func main() {
    i := 1
    fmt.Println("initial:", i)
    zeroval(i)
    fmt.Println("zeroval:", i)

The &i syntax gives the memory address of i, i.e. a pointer to i.

    zeroptr(&i)
    fmt.Println("zeroptr:", i)

Pointers can be printed too.

    fmt.Println("pointer:", &i)
}

zeroval doesn’t change the i in main, but zeroptr does because it has a reference to the memory address for that variable.

$ go run pointers.go
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0x42131100

Contoh selanjutnya: Structs.