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

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

f1()、f2()、f3() 函数分别返回什么?

func f1() (r int) {
	defer func() {
		r++
	}()
	return 0
}


func f2() (r int) {
	t := 5
	defer func() {
		t = t + 5
	}()
	return t
}


func f3() (r int) {
	defer func(r int) {
		r = r + 5
	}(r)
	return 1
}
4485 阅读
54 回复
BigBigGopher
BigBigGopher · #51 · 大约1年之前

//闭包修改了r的值,所以结果是1

func f1() (r int) { defer func() { r++ }() return 0 }

//闭包修改了t的值,对r没有任何影响,所以结果是5

func f2() (r int) { t := 5 defer func() { t = t + 5 }() return t }

//闭包修改了r的值,但是func(r int)参数中的值,非返回值r的值,所以结果是1

func f3() (r int) { defer func(r int) { r = r + 5 }(r) return 1 }

cllgeek
cllgeek · #52 · 大约1年之前

学习

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

mark

brothersam
brothersam · #54 · 10月之前

1 5 1

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