为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要命名返回参数?

为什么要命名返回参数?

Go
冉冉说 2021-05-20 14:15:48
命名函数的返回参数有什么好处?func namedReturn(i int) (ret int) {    ret = i    i += 2    return}func anonReturn(i int) int {    ret := i    i += 2    return ret}
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

命名它们有一些好处:

  • 它用作文档。

  • 它们会自动声明并初始化为零值。

  • 如果您有多个返回站点,则在更改函数的返回值时无需全部更改它们,因为它只会显示“ return”。

还有缺点,主要是很容易通过声明相同名称的变量来意外地遮盖它们。


有效的Go中有一个关于命名结果参数的部分:

可以给Go函数的返回或结果“参数”指定名称,并将其用作常规变量,就像传入的参数一样。命名后,函数开始时会将它们初始化为其类型的零值;否则,将它们初始化为零。如果函数执行不带参数的return语句,则将结果参数的当前值用作返回值。

名称不是强制性的,但它们可以使代码更短,更清晰:它们是文档。如果我们命名nextInt的结果,则显而易见,返回的int是哪个。

func nextInt(b []byte, pos int) (value, nextPos int) {

[...]


查看完整回答
反对 回复 2021-05-31
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

至少在两种情况下很有用:


每当必须声明要返回的变量时。例如


func someFunc() (int, error) {

    var r int

    var e error

    ok := someOtherFunc(&r)  // contrived, I admit

    if !ok {

        return r, someError()

    }

    return r, nil

}


func someFunc() (r int, e error) {

    ok := someOtherFunc(&r)

    if !ok {

        e = someError()

    }

    return

}

随着通过函数的执行路径数量的增加,这一点变得越来越重要。


在记录返回值并希望按名称引用它们时。godoc将返回变量视为函数签名的一部分。


查看完整回答
反对 回复 2021-05-31
  • 3 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信