你的代码输出顺序结果应该是随机的,你可以多尝试一些次数主要是由于println函数是向标准错误流中输出的而fmt.Println函数是向标准输出流中输出代码执行顺序肯定是先执行的匿名函数,再执行main后面的打印hello world流程但是他们执行的内容只是向各自的流(错误流,输出流)中输入自己的内容,但是这两个流什么时候向屏幕显示就需要抢占CPU了,也就是随机了。你可以用下面代码验证下:func main() { tss := "sdd" i := 1 func (){ println(tss) i++ }() fmt.Println("i is", i) }你会发现不管是先输出的“i is 2”, 还是先输出的“sdd”,其i的值都是2,不可能输出1,即表示i++肯定是先于打印i is前就执行了。但是错误流和标准流什么时候输出到屏幕就随机了。
你的代码输出顺序结果应该是随机的,你可以多尝试一些次数
主要是由于println函数是向标准错误流中输出的
而fmt.Println函数是向标准输出流中输出
代码执行顺序肯定是先执行的匿名函数,再执行main后面的打印hello world流程
但是他们执行的内容只是向各自的流(错误流,输出流)中输入自己的内容,
但是这两个流什么时候向屏幕显示就需要抢占CPU了,也就是随机了。
你可以用下面代码验证下:
你会发现不管是先输出的“i is 2”, 还是先输出的“sdd”,其i的值都是2,不可能输出1,即表示i++肯定是先于打印i is前就执行了。但是错误流和标准流什么时候输出到屏幕就随机了。