2022-08-29:以下go语言代码输出什么?A:10 10;B:10 19;C:19 10;D:19 19。 package main import ( “fmt“ ) func he

2022-08-29:以下go语言代码输出什么?A:10 10;B:10 19;C:19 10;D:19 19。

package main

import (
    "fmt"
)

func hello(i *int) int {
    defer func() {
        *i = 19
    }()
    return *i
}

func main() {
    i := 10
    j := hello(&i)
    fmt.Println(i, j)
}

答案2022-08-29:

答案选C。假设返回值变量是returnVal,return *i在defer函数之前执行等价于returnVal=*i,这时returnVal=10;然后执行defer,这时i=19;最后返回,hello函数执行完毕。有defer的情况下可总结为有3个步骤,那就是赋值,defer,返回。

在这里插入图片描述

posted @   福大大架构师每日一题  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
历史上的今天:
2020-08-29 2020-08-29:进程线程的区别,除了包含关系之外的一些区别,底层详细信息?
点击右上角即可分享
微信分享提示