🟡 Средний · 2 очк. Циклы и range
Что выведет: items := []struct{X int}{{1},{2}}; for _, v := range items { v.X = 0 }; fmt.Println(items[0].X)?
A 0
B 1
C Ошибка компиляции
D panic
Объяснение вопроса

Выведет 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
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.