Golang 命名返回参数
在Golang中,命名的返回参数一般被称为命名参数。Golang允许在函数签名或定义中给函数的返回或结果参数命名。或者你可以说这是在函数定义中对返回变量的明确命名。基本上,它消除了在返回语句中提及变量名称的要求。通过使用命名的返回参数或命名的参数,人们只能在函数的末尾使用返回关键字来将结果返回给调用者。这个概念通常在一个函数需要返回多个值时使用。因此,为了让用户感到舒适并提高代码的可读性,Golang提供了这一功能。
声明命名的返回参数
要声明命名的结果或返回参数,只需使用函数签名中的返回类型部分。下面是在Golang中声明一个函数的一般语法。
声明一个没有指定返回参数的函数的语法:
func function_name(Parameter-list)(Return_type){
// function body.....
}
这里,Return_Type是可选的,它包含了函数返回的值的类型。如果你在你的函数中使用Return_Type,那么就有必要在你的函数中使用返回语句。
声明一个带有命名返回参数的函数的语法:
func function_name(Parameter-list)(result_parameter1 data-_type, result_parameter2 data_type, ....){
// function body.....
return
}
这里,(result_parameter1 data-_type, result_parameter2 data_type, ….)是命名的返回参数列表以及它们的类型。你可以声明n个命名的返回参数。
例子: 在下面的程序中,func calculator(a, b int) (mul int, div int)这行代码包含命名的返回参数。函数结束时的返回语句不包含任何参数。Go编译器会自动返回参数。
// Golang program to demonstrate the
// use of Named Return Arguments
package main
import "fmt"
// Main Method
func main() {
// calling the function, here
// function returns two values
m, d := calculator(105, 7)
fmt.Println("105 x 7 = ", m)
fmt.Println("105 / 7 = ", d)
}
// function having named arguments
func calculator(a, b int) (mul int, div int) {
// here, simple assignment will
// initialize the values to it
mul = a * b
div = a / b
// here you have return keyword
// without any resultant parameters
return
}
输出:
105 x 7 = 735
105 / 7 = 15
重要提示
- 如果所有命名的返回参数的类型是共同的或相同的,那么你可以指定共同的数据类型。将下面的代码与你在上面读到的例子进行比较,可以得到更好的理解。
// function having named arguments
func calculator(a, b int) (mul, div int) {
- 这里, mul 和 div 变量都是int类型。因此,你也可以像函数变量(即 a 和 b )一样,声明具有共同数据类型的命名参数。
- 使用命名的返回参数可以提高代码的可读性,因为只需阅读函数签名就可以知道返回参数的情况。
- 在使用命名的返回参数后,返回语句一般被称为 “裸返回 “或 “裸 返回”。
- 默认情况下,Golang 将所有命名的变量定义为零值,而函数将能够使用它们。如果函数没有修改这些值,那么将自动返回零值。
- 如果你使用短声明操作符(:=)来初始化指定的返回参数,将会产生一个错误,因为它们已经被Go编译器初始化了。所以你可以使用简单赋值(=)来给指定的返回参数赋值。
// function having named arguments
func calculator(a, b int) (mul int, div int) {
// here, it will give an error
// as parameters are already defined
// in function signature
mul := a * b
div := a / b
// here you have return keyword
// without any resultant parameters
return
}
- 命名的返回参数或裸返回语句只适用于短的函数签名。对于较长的函数,明确地返回结果参数(不使用命名的返回参数)以保持代码的可读性。
- 在有命名的返回参数的情况下,裸露的返回语句是必须的。