golang运行时错误:索引超出范围

时间:2018-04-07 19:15:23

标签: go panic

我有一个简单的for循环,它遍历一个整数切片并改变当前的位置,如果next更小,基本上是一个排序,但它一直显示我这个错误,说

panic: runtime error: index out of range

以下是代码:

func sort(n int, l []int) interface{} {
    fmt.Println(l)
    if d == false {
        d = true
        for i := range l {
            n := i + 1
            t := l[i]
            l[i] = l[n]
            l[n] = t
            arr = l
            d = false
        }
        return sort(n, arr)
    }
    return arr
}

返回的arr被声明为全局变量。 这是错误:

panic: runtime error: index out of range

goroutine 1 [running]:
main.troubleSort(0x5, 0xc42001a150, 0x5, 0x5, 0x0, 0xc42000e1d0)
        /home/julkreshpaj/codejam/Trouble Sort/Solution.go:21 +0x1c1
main.main()
        /home/julkreshpaj/codejam/Trouble Sort/Solution.go:60 +0x82
exit status 2

1 个答案:

答案 0 :(得分:0)

您尝试访问l[n] n := i + 1il的索引。这意味着,在最后一次循环中,当il中的最后一个元素时,n将始终超过l的最后一个元素。每一次。