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.对于非缓冲通道:spa
“从通道接收数据”的操做 必定会在 “向通道发送数据”的操做完成前发生。
code
2.对于缓冲通道:get
“向通道发送数据”的操做 必定会在 “从通道接收数据”的操做完成前发生。string