命名函数的返回参数有什么好处?
func namedReturn(i int) (ret int) { ret = i i += 2 return } func anonReturn(i int) int { ret := i i += 2 return ret }
命名它们有一些好处:
还有缺点,主要是很容易通过声明相同名称的变量来意外地遮盖它们。
有效的Go中有一个关于命名结果参数的部分:
可以给Go函数的返回或结果“参数”指定名称,并将其用作常规变量,就像传入参数一样。命名后,函数开始时会将它们初始化为零值。如果函数执行不带参数的return语句,则将结果参数的当前值用作返回值。 名称不是强制性的,但它们可以使代码更短,更清晰:它们是文档。如果我们命名nextInt的结果,则显而易见,返回的int是哪个。 func nextInt(b []byte, pos int) (value, nextPos int) { […]
可以给Go函数的返回或结果“参数”指定名称,并将其用作常规变量,就像传入参数一样。命名后,函数开始时会将它们初始化为零值。如果函数执行不带参数的return语句,则将结果参数的当前值用作返回值。
名称不是强制性的,但它们可以使代码更短,更清晰:它们是文档。如果我们命名nextInt的结果,则显而易见,返回的int是哪个。
func nextInt(b []byte, pos int) (value, nextPos int) {
[…]