Почему этот код
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
В этом случае пустой идентификатор (подчеркивание) используется для возвращаемого значения, которое вас не интересует.
Читайте также:
- Спецификация Go: for утверждения с range условием
- Основы Go: range, итерация по срезам и картам
- Эффективный Go: цикл for
Комментариев нет:
Отправить комментарий