Go每日一题(71) 的题目如下

4030 次点击 · 7 赞 ·大约8小时之前 开始浏览   · 来源「Golang来啦」

下面代码输出什么?

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
4030 阅读
40 回复
zyicy
zyicy · #1 · 3年之前

defer 修饰的匿名函数,只能更新具名返回值

euibieur894
euibieur894 · #2 · 3年之前

打卡

henry1
henry1 · #3 · 3年之前

GET

feiyang
feiyang · #4 · 3年之前

学习了

minQie
minQie · #5 · 3年之前

di

summers
summers · #6 · 3年之前

mark

Natsuwau
Natsuwau · #7 · 3年之前

mark

Esac_Ben
Esac_Ben · #8 · 3年之前

Mark.

brothersam
brothersam · #9 · 3年之前

B. 0 1 ;func increaseA() int {,返回值i=0的时候已经绑定到返回值里里,defer改i没用了。func increaseB() (r int) {先把返回变量r设为0,defer又把r改为1. (golang码农求职)

feiyang
feiyang · #10 · 3年之前

mark

Zuos
Zuos · #11 · 3年之前

mark

henry1
henry1 · #12 · 3年之前

打卡

a406299736
a406299736 · #13 · 3年之前

mark........

cc1234
cc1234 · #14 · 3年之前

defer 更新具名返回值 B

dingweihua
dingweihua · #15 · 3年之前

return语句是把return后面的值赋给返回值,但由于increaseB中有return变量r,所以在defer里还可以对变量r进行再更新,所以返回的r为1

mingtop
mingtop · #16 · 3年之前

搞反了,return i 返回值固定了。

AntonyZhang
AntonyZhang · #17 · 3年之前

make

chengang
chengang · #18 · 3年之前

先return 后defer 再进行函数返回

hades2013
hades2013 · #19 · 2年之前

打卡学习

NovaChaos
NovaChaos · #20 · 2年之前

mk

feiyang
feiyang · #21 · 2年之前

defer 修饰的匿名函数,只能更新具名返回值

wzbwzt
wzbwzt · #22 · 2年之前

1

huangyf168
huangyf168 · #23 · 2年之前

mk

SeaSnai1
SeaSnai1 · #24 · 2年之前

打卡

a406299736
a406299736 · #25 · 2年之前

打卡

_Aiden_
_Aiden_ · #26 · 2年之前

make

hasbug
hasbug · #27 · 2年之前

mark

bopo
bopo · #28 · 2年之前

好难啊

1121cczj
1121cczj · #29 · 2年之前

mark

young13
young13 · #30 · 2年之前

done

brothersam
brothersam · #31 · 2年之前
func increaseC() (r int) {
    defer func() {
        r++
    }()
        r=+10
    return r
}
haha_cat
haha_cat · #32 · 2年之前

具名返回值

sivanliu
sivanliu · #33 · 2年之前

打卡

hasbug
hasbug · #34 · 2年之前

mark

BigBigGopher
BigBigGopher · #35 · 大约1年之前

mark

Qmfuser
Qmfuser · #36 · 10月之前

mark

huangxx69
huangxx69 · #37 · 10月之前

打卡

a22you
a22you · #38 · 6月之前

good2333333

YuPeng
YuPeng · #39 · 6月之前

mark

WarriorFromLongAgo
WarriorFromLongAgo · #40 · 6月之前

1

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传