1. 首页
  2. 主题
  3. Go问与答

slice 问题 slice bounds out of range

yangAdmin · · 1568 次点击
```go func main(){ n := []int{1,2,3,4,2,3,4,2} fmt.Println(n) m := n for k,v := range m{ if v == 2 { m = append(m[:k],m[k+1:]...) } fmt.Println(k,"========",v,"--",m) } fmt.Println(n) fmt.Println(m) } ``` ```想知道range工作原理,range m 与 for 循环的m是否是同一个m ```
你的改变对这种格式的有没有影响咯,for i:=0;i<len(m);i++{ } ----- 它不会再重新计算一次len(m)。
#4
更多评论
你这个写法会崩的。 你对比for i:=0;i<len(m);i++{ } 这个写法就知道结果。 range只是让其迭代索引随机 range的值应该是m(i) 循环本身只有迭代值,先决条件已经形成。你m的长度少了一个,肯定出错。
#1
*** range *** 是没有出错,但是*** append *** 切片时出错了,出错原因我知道,我想知道为什么改变切片对 *** for range *** 没有影响
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中