Channel 通信

  • Post author:
  • Post category:其他

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 版权协议,转载请附上原文出处链接和本声明。