共计 353 个字符,预计需要花费 1 分钟才能阅读完成。
明天分享的内容比拟根底,精确地说是 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/
正文完