s := []int{1, 2, 3}; for range s { s = append(s, 1) }?Цикл выполнит ровно 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++ и аккуратно обрабатывайте рост.