我发现在 Go 中提供命名返回变量是一个有用的特性,因为它可以避免单独声明一个或多个变量。但是,在某些情况下,我想为函数中声明的变量返回一个不同的变量作为返回变量。这似乎工作正常,但是我确实觉得声明一个返回变量然后返回其他东西有点奇怪。
在编写一个测试程序来帮助学习 Go(不是下面的那个)时,我发现在返回多个变量的函数的 return 语句中指定返回变量有点烦人。尤其如此,因为变量已在函数声明中命名。我现在在发布此内容时发现,似乎在有命名返回变量的地方,它们不需要在 return 语句中使用,只需“return”就足够了,并且会隐式使用命名变量。我发现这是一个很棒的功能。
所以,虽然我可能已经部分回答了我自己的问题,但有人可以建议我下面的用法是否可以接受?我确定这已记录在案,但我没有遇到它,而且它似乎不在我购买的参考书中,我认为它忽略了此功能。
基本上,规则似乎是(据我所知),在使用命名返回变量的地方,函数语句声明变量,并且函数可以选择隐式使用它们作为返回值,但是这可以是通过使用显式返回值覆盖。
示例程序:
package main
func main() {
var sVar1, sVar2 string
println("Test Function return-values")
sVar1, sVar2 = fGetVal(1)
println("This was returned for '1' : " + sVar1 + ", " + sVar2)
sVar1, sVar2 = fGetVal(2)
println("This was returned for '2' : " + sVar1 + ", " + sVar2)
}
func fGetVal(iSeln int) (sReturn1 string, sReturn2 string) {
sReturn1 = "This is 'sReturn1'"
sReturn2 = "This is 'sReturn2'"
switch iSeln {
case 1 : return
default : return "This is not 'sReturn1'", "This is not 'sReturn2'"
}
}