Go は、効率的で使いやすい新しいプログラミング言語です。関数の使い方も非常に柔軟で、この記事ではGolangの関数の一般的な使い方や注意点について詳しく紹介します。
1. 関数の宣言
Go 言語で関数を宣言する場合、関数名、パラメータ、戻り値を指定する必要があります。関数の基本的な形式は次のとおりです。
func 函数名 (参数1, 参数2, ...) (返回值1, 返回值2, ...) { // 函数体 }
このうち関数名は識別子の命名規則に従います。関数パラメータは任意の型にすることも、パラメータを持たないこともできます。戻り値は任意の型にすることも、戻り値がないこともできます。
たとえば、次は単純な関数宣言です:
func add(x int, y int) int { return x + y }
この関数では、2 つの整数型を持つ add
という名前の関数を宣言します。パラメータ x
と y
は次のとおりであり、戻り値はそれらの合計です。
2. 複数の戻り値関数
Go 言語は複数の戻り値関数をサポートしています。例:
func divmod(a, b int) (int, int) { return a / b, a % b }
この関数では、2 つの整数型パラメータ a
と b
を宣言し、それぞれ 2 つの整数型の値を返します。モジュロ演算。
3. パラメーターとしての関数
Go 言語では、関数をパラメーターとして他の関数に渡すことができます。例:
func apply(nums []int, f func(int) int) []int { result := []int{} for _, v := range nums { result = append(result, f(v)) } return result }
この関数では、apply
という名前の関数を宣言します。これには 2 つのパラメータがあります。1 つは整数型 nums
のスライスで、もう 1 つは関数 f
。整数パラメータを入力として受け取り、整数の結果を返します。関数 apply
は、スライス nums
の各要素を関数 f
に渡し、新しいスライスに格納された各関数の実行結果を返します。
例:
func square(x int) int { return x * x } result := apply([]int{1, 2, 3, 4}, square) // [1, 4, 9, 16]
この例では、整数を 2 乗する関数 square
を定義し、各整数に apply
関数を使用します。スライス {1, 2, 3, 4}
が関数 square
に適用され、新しいスライス [1, 4, 9, 16 ]
が生成されます。結果。
4. 関数内で関数をネストする
Go 言語では、関数を他の関数内で宣言して定義できます。例:
func outer(x, y int) int { square := func(x int) int { return x * x } return square(x) + square(y) }
この関数では、outer
という名前の関数を定義します。この関数には、2 つの整数型パラメータ x
と y
があります。関数 outer
は、整数を 2 乗する無名関数 square
を宣言および定義します。次に、関数 outer
はパラメータ x
と y
の両方を関数 square
に渡し、結果を追加します。
5. 戻り値としての関数
Go 言語では、関数を戻り値として使用できます。例:
func adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } }
この関数では、パラメーターを受け入れず関数を返す adder
という名前の関数を定義します。返される関数は、整数型の引数も受け入れ、整数型の結果を返します。関数 adder
内で、整数型変数 sum
を定義し、パラメータ x
を sum
に追加して返す無名関数を返します。 sum
の新しい値。
例:
add := adder() // 返回一个函数 fmt.Println(add(1)) // 输出 1 fmt.Println(add(2)) // 输出 3 fmt.Println(add(3)) // 输出 6
この例では、まず adder()
関数を呼び出して新しい関数 add
を取得し、次に次を使用します。 add
関数は 3 回渡され、毎回整数型の値が渡され、最終的に 1 2 3=6
が得られます。
6. defer ステートメント
Go 言語では、関数の実行完了後に defer
ステートメントを使用してクリーンアップ作業を実行できます。例:
func f() { defer fmt.Println("Done.") fmt.Println("Working.") } f() // 输出 "Working." 和 "Done."
この例では、2 つのステートメントを含む f
という名前の関数を定義します。最初のステートメントは「Working.」を出力し、2 番目のステートメントは defer
キーワードを使用して「Done.」を出力します。 defer
キーワードが存在するため、2 番目のステートメントは関数の実行が完了した後に出力されます。
さらに、defer
ステートメントには、ファイルの読み取りおよび書き込み操作での使用など、より高度な使用法があり、関数の終了時にファイル ハンドルが正しく閉じられるようにすることができます。実行。
概要
この記事では、関数宣言、複数の戻り値関数、パラメーターとしての関数、関数内の入れ子関数、戻り値と遅延としての関数など、Golang 関数の一般的な使用法と注意事項を紹介します。声明。これらのヒントを使用すると、より簡潔でエレガント、効率的な Go プログラムを作成できます。
以上がGolang 関数の一般的な使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。