为什么要命名返回参数?

命名函数的返回参数有什么好处?


func namedReturn(i int) (ret int) {

    ret = i

    i += 2

    return

}


func anonReturn(i int) int {

    ret := i

    i += 2

    return ret

}


冉冉说
浏览 188回答 3
3回答

心有法竹

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

繁花不似锦

至少在两种情况下很有用:每当必须声明要返回的变量时。例如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将返回变量视为函数签名的一部分。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go