Почему происходит сбой этой программы?
a := []int{1, 2, 3}
for i := 1; i <= len(a); i++ {
fmt.Println(a[i])
}
panic: runtime error: index out of range
Ответ
В последней итерации i равен len(a), которая находится за пределами a.
Массивы, срезы и строки индексируются, начиная с нуля, поэтому значения a находятся в a[0], a[1], a[2], …, a[len(a)-1].
Вместо этого проходите цикл от 0 до len(a)-1.
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
Или, еще лучше, используйте range.
for _, n := range a {
fmt.Println(n)
}
Читайте также:
- Спецификация Go: for утверждения с range условием
- Основы Go: range, итерация по срезам и картам
- Эффективный Go: цикл for
Комментариев нет:
Отправить комментарий