English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在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,…。){ //函数体….. //返回 }
这(result_parameter1 data__type, result_parameter2 data_type, ....)は名前付きリターンパラメータリストおよびそのタイプです。n個の名前付きリターンパラメータを宣言できます。
例:以下のプログラムでは、func calculator(a, b int) (mul int, div int)コード行に名前付きリターンパラメータが含まれています。関数の最後にreturn文は、任何のパラメータを含みません。Goコンパイラは自動的にパラメータをリターンします。
package main import "fmt" // Mainメソッド func main() { //ここで関数を呼び出します //関数は2つの値をリターンします m, d := calculator(105, 7) fmt.Println("105 x 7 = ", m) fmt.Println("105 / 7 = ", d) } // 名前付きパラメータを持つ関数 func calculator(a, b int) (mul int, div int) { //ここでは、シンプルな割り当てができます //値を初期化します mul = a * b div = a / b //ここにreturnキーワードがあります //結果パラメータはありません return }
出力:
105 x 7 = 735 105 / 7 = 15
すべての名前付きリターンパラメータのタイプが共有のまたは同じ場合、共有データ型を指定できます。以下のコードを上記の例と比較して、よりよく理解してください。
//名前付きパラメータを持つ関数 func calculator(a, b int) (mul, div int) {
ここでは、mulおよびdivすべての変数がint型です。したがって、汎用データ型を持つ名前付きパラメータを宣言することもできます。例えば、関数変数(つまりaおよびb)
名前付きリターンパラメータを使用すると、コードの可読性が向上します。なぜなら、関数シグネチャを読むだけでリターンパラメータがわかるからです。
名前付きリターンパラメータを使用した後、return文は通常"裸返"。
デフォルトでは、Golangはすべての名前付き変数にゼロ値を定義します。したがって、関数はそれらを使用できます。関数が値を変更しない場合、自動的にゼロ値がリターンされます。
以下を使用する場合短い宣言演算子(:=)名前付きリターンパラメータを初期化すると、エラーが発生します。なぜなら、それらはGoコンパイラによって初期化されているからです。したがって、名前付きリターンパラメータに値を割り当てるためにシンプルな割り当て方式(=)を使用できます。
//名前付きパラメータを持つ関数 func calculator(a, b int) (mul int, div int) { //ここでは、エラーが投げられます //既にパラメータが定義されているため //関数シグネチャの中で mul := a * b div := a / b //ここにreturnキーワードがあります //結果パラメータはありません return }
名前付きリターンパラメータまたは裸リターン文は、短い関数シグネチャにのみ適用されます。より長い関数では、コードの可読性を維持するために明示的なリターン結果パラメータ(名前付きリターンパラメータを使用しない)を使用します。
名前付きリターンパラメータを使用する場合、"裸返"のreturn文を使用する必要があります。
関連知識:Golangの関数