https://segmentfault.com/a/1190000008230146
package main import ( "time" "log" ) var a string func hello() { time.Sleep(time.Millisecond * 900) // 这里如果sleep 1 秒的话, 执行程序时可能看不到打印的 “hello” log.Println(a) } func main() { a = "hello " go hello() time.Sleep(time.Second) }
package main import ( // "log" "time" ) var a string var c = make(chan int) func main() { go func() { a = "hello " print("recv begin.. ") time.Sleep(time.Second*3) <-c sum :=0 //后面这四行注释,打印顺序变为:sb, rb, re,se. 不注释时打印顺序可能为:sb,rb,re,se. (sb: send begin, se: send end..) for i := 0; i<1<<24; i++ { sum += i } print("recv end.. ") }() print("send begin.. ") c <-12 print("send end.. ") print(a) time.Sleep(time.Second*2) }
注释4行: