package main import ( "fmt" ) var c = make(chan int) var str string func ready() { str = "abc" fmt.Println("ready1") <-c //get fmt.Println("ready2") } func main() { go ready() c <- 1 //put fmt.Println(str) }
ready1 ready2//ready2在abc前 是因为调度,没有必然关系 abc
1.对于非缓冲通道:
“从通道接收数据”的操作 一定会在 “向通道发送数据”的操作完成前发生。
2.对于缓冲通道:
“向通道发送数据”的操作 一定会在 “从通道接收数据”的操作完成前发生。
有疑问加站长微信联系(非本文作者)