🟡 Средний · 2 очк. Циклы и range
Сколько итераций выполнит цикл: s := []int{1, 2, 3}; for range s { s = append(s, 1) }?
A 3
B Бесконечный цикл
C 6
D panic
Объяснение вопроса

Цикл выполнит ровно 3 итерации. При входе в цикл for range s длина слайса вычисляется один раз (здесь 3). Последующие вызовы append увеличивают слайс, но количество итераций уже зафиксировано.

s := []int{1, 2, 3}
for range s {
    s = append(s, 1)
}
// Итераций: 3. После цикла len(s) может быть 6, но range не "увидит" новые элементы

Правило

Не полагайтесь на изменение слайса/мапы во время итерации по нему для управления циклом. Если нужно итерировать по растушей коллекции, используйте индекс в цикле for i := 0; i < len(s); i++ и аккуратно обрабатывайте рост.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.