Golang 関数の一般的な使用法

PHPz
リリース: 2023-04-25 15:46:31
オリジナル
642 人が閲覧しました

Go は、効率的で使いやすい新しいプログラミング言語です。関数の使い方も非常に柔軟で、この記事ではGolangの関数の一般的な使い方や注意点について詳しく紹介します。

1. 関数の宣言

Go 言語で関数を宣言する場合、関数名、パラメータ、戻り値を指定する必要があります。関数の基本的な形式は次のとおりです。

func 函数名 (参数1, 参数2, ...) (返回值1, 返回值2, ...) {
    // 函数体
}
ログイン後にコピー

このうち関数名は識別子の命名規則に従います。関数パラメータは任意の型にすることも、パラメータを持たないこともできます。戻り値は任意の型にすることも、戻り値がないこともできます。

たとえば、次は単純な関数宣言です:

func add(x int, y int) int {
    return x + y
}
ログイン後にコピー

この関数では、2 つの整数型を持つ add という名前の関数を宣言します。パラメータ xy は次のとおりであり、戻り値はそれらの合計です。

2. 複数の戻り値関数

Go 言語は複数の戻り値関数をサポートしています。例:

func divmod(a, b int) (int, int) {
    return a / b, a % b
}
ログイン後にコピー

この関数では、2 つの整数型パラメータ ab を宣言し、それぞれ 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 つの整数型パラメータ xy があります。関数 outer は、整数を 2 乗する無名関数 square を宣言および定義します。次に、関数 outer はパラメータ xy の両方を関数 square に渡し、結果を追加します。

5. 戻り値としての関数

Go 言語では、関数を戻り値として使用できます。例:

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}
ログイン後にコピー

この関数では、パラメーターを受け入れず関数を返す adder という名前の関数を定義します。返される関数は、整数型の引数も受け入れ、整数型の結果を返します。関数 adder 内で、整数型変数 sum を定義し、パラメータ xsum に追加して返す無名関数を返します。 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート