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:
copy
function), its elements are not copied.
After copying, the copy of the slice shares elements with the original slice.
So modifying elements in a slice means modifying the elements in the copy of the slice.
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.