golang基础,这段程序的结果为啥是奇数?

package main

import "fmt"

func main() {
    ch := make(chan int, 10)
    for i := 0; i < 10; i++ {
        ch <- i
    }
    close(ch)
    for range ch {
        fmt.Println(<-ch)
    }
}

结果是:

1 3 5 7 9
阅读 1.5k
1 个回答

因为你遍历里还在不断读啊……

本来遍历时游标(姑且称之为游标)就已经是每次前进 1 了,然后遍历里你还去读了一次、又前进 1 了。

如果你只是想单纯地遍历并打印每个之前写入的值,那么把最后那段遍历改成:

for v := range ch {
    fmt.Println(v)
}

就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏