首页   注册   登录
 TanLian 最近的时间轴更新

TanLian

V2EX 第 191615 号会员,加入于 2016-09-13 16:07:23 +08:00
今日活跃度排名 14791
TanLian 最近回复了
88 天前
回复了 frozenway 创建的主题 程序员 公司来了个年轻的程序员
:doge:
趁着编译的时间进来划划水。。。
@nekoyaki 呵呵,也许我的表达有问题吧。不过你可以参考这几篇文章,应该就能理解我说的了。
https://studygolang.com/articles/7548
https://www.golangtc.com/t/56667d4db09ecc6de0000025
https://tiancaiamao.gitbooks.io/go-internals/content/zh/03.4.html
http://blog.csdn.net/hittata/article/details/77836435
我不敢保证这几篇文章的内容有价值,仅作参考,当然你也可以忽略。
另祝君安好。
@nekoyaki 看来你对 return 不理解,golang 的 return 本来就不是一个原子语句,这样解释没毛病,并且更利于他人理解,其他不想多说。
@archliinux 公众号的每篇文章都是一个字一个字的码出来的好吗,如果你觉得某个知识点有错误,可以提出来我确定后会改。但是如果你看都没看的话就这这 BB,那么就恕不奉陪了。
@archliinux 不想和你争辩,公众号怎么你了?你牛逼怎么不见你分析,就在这喷别人
看来你对 golang 的 return 没理解,golang 和 C、C++不同,golang 的 return 不是一个原子语句,在你这个例子中,
把 return 2 分成了两步,第一步是 i=2,第二步是 return i (注意是字母 i )。但由于 defer 的特性(这个不了解的话我也无能为力了),defer 是插在这两步中间的,所以实际上的执行过程是这样的,
func testDefer() (i int) {
i = 2

func() {
fmt.Println(i)
i = 4
}()

return i
}
所以会打印 2,testDefer 函数的返回值是 4,明白?
实际上这个题主要考察的是 return 和 defer,理解了这两个知识点,就不难理解为什么输出为 2 了。
另可关注我的公众号“大后端开发”,讲解了 golang 的很多这方面的知识。
@fhefh 多谢肯定哈
想学 GO 的话可以关注我的公众号:大后端开发,里面都是我学习 GO 语言过程中的总结
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   606 人在线   最高记录 3541   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 11ms · UTC 21:08 · PVG 05:08 · LAX 14:08 · JFK 17:08
♥ Do have faith in what you're doing.
沪ICP备16043287号-1