golang 中内存模型
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\n"
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\n"
print("recv begin..\n")
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..\n")
}()
print("send begin..\n")
c <-12
print("send end..\n")
print(a)
time.Sleep(time.Second*2)
}

注释4行:


浙公网安备 33010602011771号