先决条件:Golang 中的函数
在 Golang 中,命名返回参数通常称为命名参数。 Golang 允许在函数签名或定义中为函数的返回或结果参数命名。或者你可以说它是函数定义中返回变量的显式命名。基本上,它消除了在 return 语句中提及变量名称的要求。通过使用命名返回参数或命名参数只能在函数末尾使用 return 关键字将结果返回给调用者。当函数必须返回多个值时,通常会使用此概念。所以为了用户的舒适度和提高代码的可读性,Golang 提供了这个功能。
声明命名返回参数
要声明命名结果或返回参数,只需使用函数签名的返回类型部分。下面是在 Golang 中声明函数的一般语法。
声明没有命名返回参数的函数的语法:
func function_name(Parameter-list)(Return_type){
// function body.....
}
这里, Return_Type 是可选的,它包含函数返回的值的类型。如果您在函数中使用 Return_Type,则有必要在函数使用 return 语句。
使用命名返回参数声明函数的语法:
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)
代码行包含命名的返回参数。函数末尾的 return 语句不包含任何参数。 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 )
- 使用命名返回参数将提高代码可读性,因为只需阅读函数签名即可了解返回参数。
- 使用命名返回参数后,返回语句通常称为Naked 或 Bare return。
- 默认情况下,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 }
- 命名返回参数或裸返回语句仅适用于短函数签名。对于较长的函数,显式返回结果参数(不使用命名返回参数)以保持代码的可读性。
- 在命名返回参数的情况下,裸或裸返回语句是必须的。