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