Когда вы пишете:
a := make([]int, 3)
a[0], a[1], a[2] = 1, 2, 3
for i, val := range a {
println(a[i], "vs.", val)
println(&a[i], "vs.", &val)
}
Переменной val
присваивается копия значения в a[i]
.
Это в основном то же самоекак это делается так:
var val int
for i := range a {
val = a[i]
println(a[i], "vs.", val)
println(&a[i], "vs.", &val)
}
Итак, в зависимости от того, что вы делаете, тогда:
Это похоже на одно и то же, но это не так, верно?
Если вы используете переменную для чтения значения, то это то же самое.
Но если вы присваиваете ей значение, принимаете его значение указателя и т. Д., это не .