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.
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.
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]) } } } }
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 }
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!