首页 > 文章列表 > golang函数的匿名函数

golang函数的匿名函数

匿名函数 golang
471 2024-04-23

Go 语言匿名函数可无需声明函数名称,用于创建一次性使用的函数或更大函数的一部分。其语法为 func() { // 函数体 },可接受参数和返回结果。实战案例包括排序切片(通过 sort.Slice 函数和匿名函数按特定属性排序)和过滤数据(通过 filter 函数和匿名函数过滤奇数)。

golang函数的匿名函数

Go 语言中的匿名函数

匿名函数是 Go 语言中无需声明函数名称的函数。它们通常用于快速创建一次性使用的函数或作为更大函数的一部分。

语法

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
}