slice 问题 slice bounds out of range

yangAdmin · 2020-05-09 11:38:59 · 1369 次点击

你可以做下面这个测试:

func testForRange() {
    n := []int{1, 2, 3, 4, 2, 3, 4, 2}
    fmt.Println(n)
    m := n
    fmt.Println("m cap:", cap(m), "len:", len(m))
    for k, _ := range m {
        m = append(m, 9)
        fmt.Println("key:", k, "m cap:", cap(m), "len:", len(m))
    }
    fmt.Printf("0x%x--", &n[0])
    fmt.Printf("0x%x", &m[0])
}
```
#7
更多评论

你这个写法会崩的。 你对比for i:=0;i<len(m);i++{ } 这个写法就知道结果。

range只是让其迭代索引随机 range的值应该是m(i)

循环本身只有迭代值,先决条件已经形成。你m的长度少了一个,肯定出错。

#1

range 是没有出错,但是 append 切片时出错了,出错原因我知道,我想知道为什么改变切片对 for range 没有影响

#2