Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Array passed by value or by reference

package main

import "fmt"

func main() {
	a := [...]int{4, 7, 12}
	fmt.Printf("before %v\n", a)
	change(a)
	fmt.Printf("after %v\n", a)
	reallyChange(&a)
	fmt.Printf("end %v\n", a)
}

func change(val [3]int) {
	fmt.Printf("val in change: %v\n", val)
	val[1] = 42
	fmt.Printf("val in change: %v\n", val)
}

func reallyChange(val *[3]int) {
	fmt.Printf("val in reallyChange: %v\n", val)
	val[1] = 42
	fmt.Printf("val in reallyChange: %v\n", val)
}
before [4 7 12]
val in change: [4 7 12]
val in change: [4 42 12]
after [4 7 12]
val in reallyChange: &[4 7 12]
val in reallyChange: &[4 42 12]
end [4 42 12]