1. 使用make命令创建channel
c1 := make(chan int)
c2 := make(chan int, 10)
chan + int 设置channel类型为int,可以设置任意类型的channel
2. 发送数据(send)
ch <- 1
- 无缓冲区的channel只有在receiver准备好后send才被执行。如果有缓冲区,并且缓冲区未满,则send会被执行。
3. 读取channel数据(receive)
i := <-c
x, ok := <-ch
4. 关闭管道(close)
-
使用close()方法对管道进行关闭
-
如果channel c已经被关闭,继续往它发送数据会导致panic: send on closed channel
:
-
从已关闭的channel中可以读取出已发送的数据,读完后继续读取会读到零值。
-
通过range
读取已关闭的channel,读出已发送数据后for循环会跳出:
c := make(chan int, 10)
c <- 1
c <- 2
close(c)
for i := range c {
fmt.Println(i)
}
通过i, ok := <-c
可以查看Channel的状态,判断值是零值还是正常读取的值。(同点3)
参考: https://www.runoob.com/w3cnote/go-channel-intro.html
练习: https://exercism.org/tracks/go/exercises/parallel-letter-frequency
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)