go语言中的匿名函数执行顺序
预计执行结果:
sdd
hello world, sdd
实际执行结果:
hello world, sdd
sdd
不明白其中的缘由,不应该先执行匿名函数吗?
回答
你的代码输出顺序结果应该是随机的,你可以多尝试一些次数
主要是由于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前就执行了。但是错误流和标准流什么时候输出到屏幕就随机了。
以上是 go语言中的匿名函数执行顺序 的全部内容, 来源链接: utcz.com/a/43181.html