首页后端开发GOGo 匿名返回值的坑——这道题据说 90% 的同学都答错了!

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

时间2023-10-19 02:27:03发布访客分类GO浏览1418
导读:今天分享的内容比较基础,准确地说是 Go 的语言特性——命名、匿名返回值。先看下面的例子,猜测会输出什么?package main func main( { println(A( println(B( } func A( ...

今天分享的内容比较基础,准确地说是 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/

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Go 匿名返回值的坑——这道题据说 90% 的同学都答错了!
本文地址: https://pptw.com/jishu/500951.html
gookit/goutil - 发布 v0.6.10 版本, Go常用功能的扩展工具库 分享我的 Shell 环境,git 操作效率提升 100% !

游客 回复需填写必要信息