我是靠谱客的博主 稳重秀发,这篇文章主要介绍go 的 channel 的遍历和关闭一 channel 的关闭二 channel 的遍历三 channel 遍历和关闭实战,现在分享给大家,希望可以做个参考。

一 channel 的关闭

1 点睛

使用内置函数 close 可以关闭 channel, 当 channel 关闭后,就不能再向 channel 写数据了,但是仍然可以从该 channel 读取数据。

2 代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main import ( "fmt" ) func main() { intChan := make(chan int, 3) intChan <- 100 intChan <- 200 close(intChan) // close // 这时不能够再写入数到 channel // intChan<- 300 fmt.Println("okook~") // 当管道关闭后,读取数据是可以的 n1 := <-intChan fmt.Println("n1=", n1) }

3 测试

okook~

n1= 100

二 channel 的遍历

1 点睛

channel 支持 for range 的方式进行遍历,需要注意两个细节。

a 在遍历时,如果 channel 没有关闭,则回出现 deadlock 的错误。

b 在遍历时,如果 channel 已经关闭,则会正常遍历数据,遍历完后,就会退出遍历。

三 channel 遍历和关闭实战

1 代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main import ( "fmt" ) func main() { // 遍历管道 intChan2 := make(chan int, 10) for i := 0; i < 10; i++ { intChan2 <- i * 2 // 放入100个数据到管道 } close(intChan2) for v := range intChan2 { fmt.Println("v=", v) } }

2 测试

复制代码
1
2
3
4
5
6
7
8
9
10
v= 0 v= 2 v= 4 v= 6 v= 8 v= 10 v= 12 v= 14 v= 16 v= 18

 

最后

以上就是稳重秀发最近收集整理的关于go 的 channel 的遍历和关闭一 channel 的关闭二 channel 的遍历三 channel 遍历和关闭实战的全部内容,更多相关go内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部