English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎チュートリアル

Golang 制御文

Golang ファンクション & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行

Golang エラ(Error)

Golang 他の雑多

Go 返却引数の命名

在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の関数