1、通道上的发送发生在该通道上的相应接收完成之前。
var c = make(chan int, 10)
var a string
func f() {
a = "hello, world"
c <- 0//close(c)
}
func main() {
go f()
<-c
print(a)
}
确保打印: “hello, world”。
2、通道关闭发生在由于通道关闭而返回零值的接收之前。
var c = make(chan int, 10)
var a string
func f() {
a = "hello, world"
close(c)//c <- 0
}
func main() {
go f()
<-c
print(a)
}
确保打印: “hello, world”。
3、在容量为C的通道上的第k个接收发生在该通道的第k + C个发送完成之前。
推论:来自无缓冲通道的接收发生在该通道上的发送完成之前。
var c = make(chan int)
var a string
func f() {
a = "hello, world"
<-c
}
func main() {
go f()
c <- 0
print(a)
}
确保打印: “hello, world”。
版权声明:本文为kesenzhang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。