Go每日一题 今日(2025-01-21) 的题目如下

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

下面代码输出什么?

type Person struct {
	age int
}

func main() {
	person := &Person{28}

	// 1.
	defer fmt.Println(person.age)

	// 2.
	defer func(p *Person) {
		fmt.Println(p.age)
	}(person)

	// 3.
	defer func() {
		fmt.Println(person.age)
	}()

	person = &Person{29}
}
4210 阅读
47 回复
AREA-GO
AREA-GO · #1 · 3年之前

打卡

neil_liu
neil_liu · #2 · 3年之前

m

halo_young
halo_young · #3 · 3年之前

m

henry1
henry1 · #4 · 3年之前

minQie
minQie · #5 · 3年之前

di

dingweihua
dingweihua · #6 · 3年之前

29 28 28

virtue1990
virtue1990 · #7 · 3年之前

m

Natsuwau
Natsuwau · #8 · 3年之前

mark

euibieur894
euibieur894 · #9 · 3年之前

打卡

GO_go_GO1
GO_go_GO1 · #10 · 3年之前

三个28

GO_go_GO1
GO_go_GO1 · #11 · 3年之前

也就是函数传参的都变了,对吧

summers
summers · #12 · 3年之前

m

feiyang
feiyang · #13 · 3年之前

mark,

NovaChaos
NovaChaos · #14 · 3年之前

mk

henry1
henry1 · #15 · 3年之前

打卡

brothersam
brothersam · #16 · 3年之前

艹,坑王

a406299736
a406299736 · #17 · 3年之前

打卡。。。。。。。。。

Dessert
Dessert · #18 · 3年之前

注意第二个defer

abcdhope
abcdhope · #19 · 3年之前

defer的使用

mingtop
mingtop · #20 · 3年之前

1.person.age 缓存在栈 输出 28 2.defer 缓存Person{28} 地址,这个地址指向的结构体没有被改变,最后 defer 语句后面的函数执行的时候取出仍是 28; 3.闭包引用,person 的值已经被改变,指向结构体 Person{29},所以输出 29.

Zuos
Zuos · #21 · 3年之前

mark

zhangdi
zhangdi · #22 · 3年之前

可以跟Go每日一题(75)对比学习

QRQRQRqrqr
QRQRQRqrqr · #23 · 3年之前

defer 缓存 结构体 地址

cc1234
cc1234 · #24 · 3年之前

缓存 缓存 闭包

felixzxk
felixzxk · #25 · 3年之前

mark

AntonyZhang
AntonyZhang · #26 · 3年之前

mark

feiyang
feiyang · #27 · 2年之前

person.age 缓存在栈 输出 28 2.defer 缓存Person{28} 地址,这个地址指向的结构体没有被改变,最后 defer 语句后面的函数执行的时候取出仍是 28; 3.闭包引用,person 的值已经被改变,指向结构体 Person{29},所以输出 29.

mingtop
mingtop · #28 · 2年之前

怎么反反复复都是这几个题目啊。。。

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

mark

wzbwzt
wzbwzt · #30 · 2年之前

1

hades2013
hades2013 · #31 · 2年之前

打卡学习

Rob1n
Rob1n · #32 · 2年之前

打卡, 闭包+defer

hasbug
hasbug · #33 · 2年之前

mark

528548004
528548004 · #34 · 大约1年之前

最近题目有点糊弄了奥

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

mark

brothersam
brothersam · #36 · 大约1年之前

16楼 @brothersam 继续掉坑

1174en
1174en · #37 · 大约1年之前

m

hasbug
hasbug · #38 · 大约1年之前

mark

BigBigGopher
BigBigGopher · #39 · 11月之前

mark

brothersam
brothersam · #40 · 11月之前

my error

YuPeng
YuPeng · #41 · 11月之前

mark 学到了

Qmfuser
Qmfuser · #42 · 11月之前

mark

cllgeek
cllgeek · #43 · 11月之前

掉坑里了

hgf2273100559
hgf2273100559 · #44 · 11月之前

为什么闭包就是29 萌新不懂就问

brothersam
brothersam · #45 · 7月之前

29 28 28 ; person = &Person{29} 是一个新的指针

lijinzhu0312
lijinzhu0312 · #46 · 7月之前

29 28 28

huangxx69
huangxx69 · #47 · 7月之前

打卡,defer的执行顺序为先进后出

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