Выбор ответа Junior Слайсы и мапы изнутри спрашивают часто обновлено
Изменение элемента в range по слайсу структур
Вопрос
Что выведет код?
type Item struct{ N int }
items := []Item{{0}}
for _, it := range items {
it.N = 10
}
fmt.Println(items[0].N)
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 0. for , it := range items кладёт в it копию элемента.
Варианты ответа
1010правильный ответ- Ошибка компиляции
Разбор
for _, it := range items кладёт в it копию элемента. Изменение копии не трогает слайс. Правильно через индекс: items[i].N = 10, или хранить []*Item.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Шаги append при нехватке ёмкости
Следующий вопрос
append в подслайс затирает исходный
Ещё по теме «Слайсы и мапы изнутри»
- Разбить слайс на части по k на Go
- Удаление дубликатов с сохранением порядка на Go
- Группировка анаграмм на Go
- Циклический сдвиг слайса на Go
- Число подмассивов с суммой k на Go
- Топ-k частых слов на Go
- Что выведет Go: append при полной ёмкости
- Что выведет Go: два append в один подслайс