ホームページ > バックエンド開発 > Golang > Golang 関数の高度な機能の紹介

Golang 関数の高度な機能の紹介

PHPz
リリース: 2024-04-15 14:45:02
オリジナル
807 人が閲覧しました

高度な Golang 関数の機能: クロージャ: データを渡すために周囲のスコープ内の変数をキャプチャします。可変引数関数: 可変数のパラメーターを受け入れます。匿名関数: 名前のない、1 回限りのコールバックまたはクロージャ。高階関数: 関数パラメータを受信または返します。ジェネリック: さまざまなデータ型に適用できるユニバーサル関数 (Go 1.18 で導入)。

Golang 関数の高度な機能の紹介

Golang 関数の高度な機能

関数は、コードを整理するための強力な方法です。 Go 関数は、よりモジュール化された保守可能なコードを作成するのに役立つ一連の高度な機能を提供します。この記事では、いくつかの便利な高度な機能を紹介し、実際のケースを通じてその応用例を示します。

クロージャ

クロージャは、周囲の関数のスコープ変数をキャプチャする関数です。これにより、関数の実行後にこれらの変数にアクセスできるようになります。これは、ネストされた関数またはコールバックにデータを渡す必要がある場合に便利です。

func outer() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    f := outer()
    fmt.Println(f()) // 1
    fmt.Println(f()) // 2
}
ログイン後にコピー

可変個引数関数

可変個引数関数を使用すると、可変数の引数を渡すことができます。これは、さまざまなソースからのデータを処理する必要がある場合に便利です。

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    fmt.Println(sum(1, 2, 3, 4, 5)) // 15
}
ログイン後にコピー

匿名関数

匿名関数は、明示的なレシーバーを持たない名前のない関数です。これらは、ワンタイム コールバックまたはクロージャを便利に定義するためによく使用されます。

func main() {
    // 定义一个匿名函数并传递给 sort.Slice
    sort.Slice([]int{1, 3, 2}, func(i, j int) bool {
        return []int{1, 3, 2}[i] < []int{1, 3, 2}[j]
    })
}
ログイン後にコピー

高階関数

高階関数は、関数をパラメータとして受け取るか、関数を返す関数です。これにより、実行時により柔軟でカスタマイズ可能なコードを構築できます。

func add10(x int) int {
    return x + 10
}

func mapValues(nums []int, f func(int) int) []int {
    result := make([]int, len(nums))
    for i, num := range nums {
        result[i] = f(num)
    }
    return result
}

func main() {
    nums := []int{1, 2, 3, 4, 5}
    fmt.Println(mapValues(nums, add10)) // [11 12 13 14 15]
}
ログイン後にコピー

ジェネリック

ジェネリックを使用すると、さまざまなデータ型にわたって幅広く機能する関数を作成できます。ジェネリックは Go 1.18 で導入されました。

func max[T comparable](a, b T) T {
    if a > b {
        return a
    }
    return b
}

func main() {
    fmt.Println(max(1, 2)) // 2
    fmt.Println(max("hello", "world")) // world
}
ログイン後にコピー

これらは、Golang 関数の高度な機能の一部です。これらの機能は、クロージャ、可変長関数、匿名関数、高階関数、ジェネリックのサポートを提供することで、プログラミングの効率とコードの品質を大幅に向上させることができます。

以上がGolang 関数の高度な機能の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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