Slice Bounds Out of Range

runtime error: index out of range [X] with length Y

Quick Answer

You are accessing a slice or array index that exceeds its length. Verify the index is within bounds before accessing the element.

Why This Happens

Go slices are zero-indexed and accessing an index equal to or greater than the slice length causes a runtime panic. This often happens in loops with off-by-one errors, or when assuming a slice has elements without checking its length first.

The Problem

func main() {
    s := []int{1, 2, 3}
    fmt.Println(s[3]) // panic: index out of range [3] with length 3
}

The Fix

func main() {
    s := []int{1, 2, 3}
    if len(s) > 3 {
        fmt.Println(s[3])
    } else {
        fmt.Println("index out of bounds")
    }
}

Step-by-Step Fix

  1. 1

    Identify the access

    Find the line in the stack trace where the out-of-range access happens and note the index and length.

  2. 2

    Check the data source

    Determine why the slice has fewer elements than expected. It may be an empty result from a database query or API call.

  3. 3

    Add bounds checking

    Always check len(slice) before accessing by index, especially for user-supplied indices or parsed data.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free