items := []struct{X int}{{1},{2}}; for _, v := range items { v.X = 0 }; fmt.Println(items[0].X)?Выведет 1. В цикле for _, v := range items переменная v - это копия элемента слайса, а не ссылка. Присваивание v.X = 0 меняет только копию; оригинальные элементы в items не изменяются.
items := []struct{ X int }{{1}, {2}}
for _, v := range items {
v.X = 0
}
fmt.Println(items[0].X) // 1
for i := range items {
items[i].X = 0
}
// или
for i := 0; i < len(items); i++ {
items[i].X = 0
}