Maison  >  Article  >  développement back-end  >  Fonction anonyme pour la fonction golang

Fonction anonyme pour la fonction golang

王林
王林original
2024-04-20 12:27:02682parcourir

Les fonctions anonymes du langage Go peuvent être utilisées pour créer des fonctions uniques ou des parties de fonctions plus grandes sans déclarer de nom de fonction. Sa syntaxe est func() { // function body }, qui accepte les paramètres et renvoie les résultats. Des exemples pratiques incluent le tri des tranches (tri par attributs spécifiques via la fonction sort.Slice et les fonctions anonymes) et le filtrage des données (filtrage des nombres impairs via la fonction filtre et les fonctions anonymes).

Fonction anonyme pour la fonction golang

Fonctions anonymes en langage Go

Les fonctions anonymes sont des fonctions en langage Go qui n'ont pas besoin de déclarer un nom de fonction. Ils sont souvent utilisés pour créer rapidement des fonctions à usage unique ou dans le cadre d’une fonction plus vaste.

Syntaxe

func() {
    // 函数体
}

Les fonctions anonymes peuvent accepter des paramètres et renvoyer des résultats comme les fonctions ordinaires :

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

Exemples pratiques

Trier les tranches

Nous pouvons utiliser des fonctions anonymes dans sort.Slice fonctions pour trier les tranches en fonction du tri par attributs spécifiques des éléments :

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)
}

Filtrer les données

Nous pouvons également utiliser des fonctions anonymes pour filtrer les données :

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
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn