Go gotcha: Why is this index out of range?
Why does this program crash?
a := []int{1, 2, 3}
for i := 1; i <= len(a); i++ {
fmt.Println(a[i])
}
panic: runtime error: index out of range
goroutine 1 [running]:
main.main()
../main.go:3 +0xe0
Answer
In the last iteration, i equals len(a) which is outside the bounds of a.
Arrays, slices and strings are indexed starting from zero so the values of a are found at a[0], a[1], a[2], …, a[len(a)-1].
Loop from 0 to len(a)-1 instead:
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
or, better yet, use a range loop:
for _, n := range a {
fmt.Println(n)
}
Comments
Be the first to comment!