前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!

Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!

原创
作者头像
仁扬
发布2023-07-03 21:19:14
1230
发布2023-07-03 21:19:14
举报
文章被收录于专栏:仁扬笔记

今天分享的内容比较基础,准确地说是 Go 的语言特性——命名、匿名返回值。

先看下面的例子,猜测会输出什么?

代码语言:go
复制
package main

func main() {
	println(A())
	println(B())
}

func A() int {
	var i int
	defer func() {
		i = i + 3
	}()
	return i
}

func B() (i int) {
	defer func() {
		i = i + 3
	}()
	return i
}

|

(想好答案再滑下来)

|

|

|

|

|

|

|

|

|

|

正确答案:0 3。

A 和 B 两个函数的区别在于,B 的函数返回值是命名的,所以 defer 函数执行的修改,会作用到 B 本身;

而 A 函数返回值是匿名的,取决于 return 的时候求出来的值。

文章来源于本人博客,发布于 2018-06-02,原文链接:https://imlht.com/archives/168/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档