Maison > développement back-end > Golang > le corps du texte

Introduction aux fonctionnalités avancées des fonctions Golang

PHPz
Libérer: 2024-04-15 14:45:02
original
783 Les gens l'ont consulté

Fonctionnalités avancées de la fonction Golang : Fermeture : capturez des variables dans la portée environnante pour transmettre des données. Fonction variadique : accepte un nombre variable de paramètres. Fonction anonyme : rappel ou fermeture unique et sans nom. Fonctions d'ordre supérieur : recevoir ou renvoyer des paramètres de fonction. Génériques : fonctions universelles, applicables à différents types de données (introduites dans Go 1.18).

Introduction aux fonctionnalités avancées des fonctions Golang

Fonctionnalités avancées des fonctions Golang

Les fonctions sont un moyen puissant d'organiser votre code. Les fonctions Go fournissent un ensemble de fonctionnalités avancées qui vous aident à écrire du code plus modulaire et plus maintenable. Cet article présentera quelques fonctionnalités avancées utiles et démontrera leur application à travers des cas pratiques.

Closures

Les fermetures sont des fonctions qui capturent les variables de portée des fonctions environnantes. Il vous permet d'accéder à ces variables après l'exécution de la fonction. Ceci est utile lorsque vous devez transmettre des données à des fonctions ou des rappels imbriqués.

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

func main() {
    f := outer()
    fmt.Println(f()) // 1
    fmt.Println(f()) // 2
}
Copier après la connexion

Fonctions variadiques

Les fonctions variadiques vous permettent de transmettre un nombre variable de paramètres. Ceci est utile lorsque vous devez traiter des données provenant de différentes sources.

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
}
Copier après la connexion

Fonctions anonymes

Les fonctions anonymes sont des fonctions sans nom qui n'ont pas de récepteur explicite. Ils sont souvent utilisés pour définir facilement des rappels ou des fermetures ponctuelles.

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]
    })
}
Copier après la connexion

Fonctions d'ordre supérieur

Une fonction d'ordre supérieur est une fonction qui prend une fonction comme paramètre ou renvoie une fonction. Cela vous permet de créer un code plus flexible et personnalisable au moment de l'exécution.

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]
}
Copier après la connexion

Generics

Les génériques vous permettent d'écrire des fonctions qui fonctionnent largement sur différents types de données. Les génériques ont été introduits dans 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
}
Copier après la connexion

Voici quelques fonctionnalités avancées des fonctions Golang. Ces fonctionnalités peuvent considérablement améliorer l'efficacité de votre programmation et la qualité de votre code en prenant en charge les fermetures, les fonctions variadiques, les fonctions anonymes, les fonctions d'ordre supérieur et les génériques.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal