登录
首页 >  Golang >  Go问答

go语言中的匿名函数执行顺序

来源:SegmentFault

时间:2023-02-16 15:33:56 386浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《go语言中的匿名函数执行顺序》,介绍一下go,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

image.png

image.png

预计执行结果:
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前就执行了。但是错误流和标准流什么时候输出到屏幕就随机了。

image.png

image.png

好了,本文到此结束,带大家了解了《go语言中的匿名函数执行顺序》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表