понедельник, 25 мая 2020 г.

Индекс вне диапазона

Почему происходит сбой этой программы?

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)
}


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


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

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