Pointers / Basics of pointers / Essential Go

Run Settings
LanguageGo
Language Version
Run Command
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) // `i` is still equal to 1 because `zeroval` edited // a "copy" of `i`, not the original. // The `&i` syntax gives the memory address of `i`, // i.e. a pointer to `i`. When calling `zeroptr`, // it will edit the "original" `i`. zeroptr(&i) fmt.Println("zeroptr:", i) // Pointers can be printed too. fmt.Println("pointer:", &i) }
Editor Settings
Theme
Key bindings
Full width
Lines