loop 2

What does the following program print?
package main

func f() {
	var a = [2]int{5, 7}
	for i, v := range a {
		if i == 0 {
			a[1] = 9
		} else {
			print(v)
		}
	}
}

func g() {
	var a = [2]int{5, 7}
	for i, v := range a[:] {
		if i == 0 {
			a[1] = 9
		} else {
			print(v)
		}
	}
}

func main() {
	f()
	g()
}

Choices:

Answer: 79

Run it on Go play.

Key points:

So in function f, the modification of a[1] is not reflected in the loop. But the modification of a[1] in function g is reflected in the loop.