首頁  >  文章  >  後端開發  >  golang函數的匿名函數

golang函數的匿名函數

王林
王林原創
2024-04-20 12:27:02682瀏覽

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
}

以上是golang函數的匿名函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn