ホームページ  >  記事  >  バックエンド開発  >  golang関数の匿名関数

golang関数の匿名関数

王林
王林オリジナル
2024-04-20 12:27:02682ブラウズ

Go 言語の匿名関数を使用すると、関数名を宣言せずに 1 回限りの関数またはより大きな関数の一部を作成できます。その構文は func() { // function body } で、パラメータを受け取り、結果を返します。実際の例には、スライスの並べ替え (sort.Slice 関数と匿名関数を使用した特定の属性による並べ替え) やデータのフィルター処理 (filter 関数と匿名関数を使用した奇数のフィルター) が含まれます。

golang関数の匿名関数

#Go 言語の匿名関数

匿名関数は、関数名を宣言する必要のない Go 言語の関数です。これらは、1 回限りの関数をすばやく作成するために、またはより大きな関数の一部としてよく使用されます。

構文

func() {
    // 函数体
}

匿名関数は、通常の関数と同じようにパラメータを受け取り、結果を返すことができます。

func(x int) int {
    return x * x
}

実践的なケース

ソートスライス

sort.Slice関数で匿名関数を使用して、スライス要素の特定のプロパティに基づいて並べ替えることができます:

package main

import (
    "fmt"
    "sort"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    people := []Person{
        {"John", 25},
        {"Mary", 30},
        {"Bob", 20},
    }

    // 根据 age 排序
    sort.Slice(people, func(i, j int) bool {
        return people[i].Age < people[j].Age
    })

    fmt.Println(people)
}

データのフィルタリング

匿名関数を使用してデータをフィルタリングすることもできます:

package main

import "fmt"

func main() {
    nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    // 过滤奇数
    oddNums := filter(nums, func(x int) bool {
        return x % 2 != 0
    })

    fmt.Println(oddNums)
}

func filter(arr []int, f func(int) bool) []int {
    result := []int{}

    for _, v := range arr {
        if f(v) {
            result = append(result, v)
        }
    }

    return result
}

以上がgolang関数の匿名関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。