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

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,返回。

在这里插入图片描述

本作品采用《CC 协议》,转载必须注明作者和本文链接
微信公众号:福大大架构师每日一题。最新面试题,涉及golang,rust,mysql,redis,云原生,算法,分布式,网络,操作系统。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
471
粉丝
21
喜欢
37
收藏
22
排名:457
访问:1.9 万
私信
所有博文
社区赞助商