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

Неожиданные значения в range цикле

Почему этот код

primes := []int{2, 3, 5, 7}
for p := range primes {
    fmt.Println(p)
}

печатает

0
1
2
3

Ответ

Для массивов и срезов range цикл генерирует два значения:

  • сначала индекс,
  • затем данные в этой позиции.

Если вы опустите второе значение, вы получите только индексы.

Чтобы распечатать данные, используйте второе значение:

primes := []int{2, 3, 5, 7}
for _, p := range primes {
    fmt.Println(p)
}

2
3
5
7

В этом случае пустой идентификатор (подчеркивание) используется для возвращаемого значения, которое вас не интересует.


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


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

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