вторник, 26 мая 2020 г.

Изменение записей в range цикле в Golang

Почему срез не обновляется в этом примере?

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]


Читайте также:


Комментариев нет:

Отправить комментарий