Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!
导读:今天分享的内容比较基础,准确地说是 Go 的语言特性——命名、匿名返回值。先看下面的例子,猜测会输出什么?package main func main( { println(A( println(B( } func A( ...
今天分享的内容比较基础,准确地说是 Go 的语言特性——命名、匿名返回值。
先看下面的例子,猜测会输出什么?
package main
func main() {
println(A())
println(B())
}
func A() int {
var i int
defer func() {
i = i + 3
}
()
return i
}
func B() (i int) {
defer func() {
i = i + 3
}
()
return i
}
|
(想好答案再滑下来)
|
|
|
|
|
|
|
|
|
|
正确答案:0 3。
A 和 B 两个函数的区别在于,B 的函数返回值是命名的,所以 defer 函数执行的修改,会作用到 B 本身;
而 A 函数返回值是匿名的,取决于 return 的时候求出来的值。
文章来源于本人博客,发布于 2018-06-02,原文链接:https://imlht.com/archives/168/
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!
本文地址: https://pptw.com/jishu/500951.html