Maison  >  Article  >  développement back-end  >  Modèles de conception courants pour les fonctions Golang

Modèles de conception courants pour les fonctions Golang

PHPz
PHPzoriginal
2024-04-26 17:51:01515parcourir

Le modèle de conception des fonctions du langage Go est utilisé pour améliorer la lisibilité, la maintenabilité et la réutilisabilité du code, notamment : Paramètres d'entrée/sortie : permet aux fonctions de modifier la valeur de l'appelant via des paramètres. Renvoyez plusieurs valeurs : simplifiez le code et évitez d’utiliser des variables globales. Fonctionne comme paramètres : créez un code flexible et personnalisable.

Modèles de conception courants pour les fonctions Golang

Modèles de conception courants dans les fonctions du langage Go

Cet article présente les modèles de conception de fonctions courants dans le langage Go, qui peuvent améliorer la lisibilité, la maintenabilité et la réutilisabilité du code.

Paramètres d'entrée/sortie

Les paramètres d'entrée/sortie permettent à une fonction de modifier la valeur de l'appelant via des paramètres. Par exemple, on peut intervertir l'ordre de deux valeurs dans une fonction :

func swap(a, b *int) {
    *a, *b = *b, *a
}

Exemple pratique : Fonction auxiliaire pour le tri :

func sort(arr []int) {
    for i := 0; i < len(arr); i++ {
        for j := i + 1; j < len(arr); j++ {
            if arr[i] > arr[j] {
                swap(&arr[i], &arr[j])
            }
        }
    }
}

Renvoyer plusieurs valeurs

Le langage Go permet aux fonctions de renvoyer plusieurs valeurs. Cela simplifie le code et évite l'utilisation de variables globales. Par exemple, on peut utiliser la fonction pour obtenir les valeurs minimales et maximales d'un tableau :

func minMax(arr []int) (int, int) {
    min := arr[0]
    max := arr[0]
    for _, v := range arr {
        if v < min {
            min = v
        }
        if v > max {
            max = v
        }
    }
    return min, max
}

Exemple pratique : Fonction de calcul de statistiques :

func stats(arr []int) (float64, float64) {
    sum := 0
    for _, v := range arr {
        sum += v
    }
    average := float64(sum) / float64(len(arr))
    return average, float64(minMax(arr)[0] + minMax(arr)[1]) / 2
}

Fonction en paramètre

Les fonctions Go peuvent être passées en paramètres à d'autres fonctions. Cela nous permet de créer un code flexible et personnalisable. Par exemple, on peut utiliser une fonction comme fonction de comparaison :

type Person struct {
    Name string
    Age  int
}

func compareByName(a, b Person) int {
    return strings.Compare(a.Name, b.Name)
}

func sortByName(people []Person) {
    sort.Slice(people, func(i, j int) bool { return compareByName(people[i], people[j]) < 0 })
}

Un exemple pratique : Fonction de tri universelle pour découper une structure en fonction de différents champs :

func sortBy(slice interface{}, less func(i, j interface{}) bool) {
    sort.Slice(slice, func(i, j int) bool { return less(slice[i], slice[j]) })
}

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