当我查看golang内存模型文档(链接)时,我在go lang上发现了一个奇怪的行为.该文档说下面的代码可能发生g打印2然后0.
var a, b int
func f() {
a = 1
b = 2
}
func g() {
print(b)
print(a)
}
func main() {
go f()
g()
}
Run Code Online (Sandbox Code Playgroud)
这只是常规问题吗?因为我很好奇为什么变量'b'的值赋值可以在'a'之前发生?即使'a'和'b的值赋值将在不同的线程中发生(不在主线程中),是否必须确保'a'应该在它自己的线程中的'b'之前分配?(因为赋值' '先到先得'和'b'先出现了)有谁能清楚告诉我这个问题?