Golang 命名返回参数

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个命名的返回参数。

Golang中的命名返回参数

例子: 在下面的程序中,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
}
  • 命名的返回参数或裸返回语句只适用于短的函数签名。对于较长的函数,明确地返回结果参数(不使用命名的返回参数)以保持代码的可读性。
  • 在有命名的返回参数的情况下,裸露的返回语句是必须的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程