slice 问题 slice bounds out of range

yangAdmin · · 1238 次点击
你可以做下面这个测试: ````````````````````````` 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