• 欢迎访问周知博客,每周记录新知识
  • 祝各位学得开心!!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

go语言问题(函数返回值)

go问题集 admin 10个月前 (02-16) 176次浏览 0个评论

下面代码输出什么?

func increaseA() int {
        var i int
        defer func() {
                i++
        }()
        return i
}

func increaseB() (r int) {
        defer func() {
                r++
        }()
        return r
}

func main() {
        fmt.Println(increaseA())
        fmt.Println(increaseB())}

A. 1 1
B. 0 1
C. 1 0
D. 0 0

参考答案及解析:B。
知识点:defer、返回值。注意一下,increaseA() 的返回参数是匿名,increaseB() 是具名。
func increaseA() int {,返回值i=0的时候已经绑定到返回值里里,defer改i没用了。func increaseB() (r int) {先把返回变量r设为0,defer又把r改为1.


周知博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:go语言问题(函数返回值)
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址