Почему срез не обновляется в этом примере?
s := []int{1, 1, 1}
for _, n := range s {
n += 1
}
fmt.Println(s)
// Вывод: [1 1 1]
Ответ
Range цикл копирует значения из среза в локальную переменную n; обновление n не повлияет на срез.
Обновите записи среза, обращаясь к ним по индексам:
s := []int{1, 1, 1}
for i := range s {
s[i] += 1
}
fmt.Println(s)
// Вывод: [2 2 2]
Читайте также:
- Спецификация Go: for утверждения с range условием
- Основы Go: range, итерация по срезам и картам
- Эффективный Go: цикл for
Комментариев нет:
Отправить комментарий