我想了解Go中的并发性。 特别是,我写了这个线程不安全的程序: package main import "fmt" var x = 1 func inc_x() { //test for { x += 1 } } func main() { go inc_x() for { fmt.Println(x) } } 我认识到我应该使用渠道来防止x竞争条件,但这不是重点。 该程序打印1 ,然后似乎永远循环(不打印任何更多)。 我希望它打印出一个无限的数字列表,可能跳过一些,并重复其他人由于竞争条件(或更糟糕的 – 打印数字,而它正在更新inc_x )。 我的问题是:为什么程序只打印一行? 只是要清楚:我没有使用渠道的目的这个玩具的例子。