Programmation en Go/Fonctions
Nombre variable de paramètres
modifierLe dernier paramètre d'une fonction peut être suivi de ...type qui définit un nombre variable de paramètres.
func Min(a ...int) int {
if len(a)==0 {
return 0
}
min := a[0]
for _, v := range a {
if v < min {
min = v
}
}
return min
}
Ensuite, on peut appeler cette fonction de la manière suivante:
x := Min(1, 3, 2, 0) // zéro
On peut également passer un tableau à la place des arguments avec la syntaxe t...:
tab := []int{1,3,2,0}
x := Min(tab...)
Valeur de retour nommée
modifierOn peut omettre le nom de la variable de retour grâce à ce nom:
func Somme(a []int) (somme int) {
for _,v := range a {
somme += v
}
return
}
Valeurs de retour multiples
modifierOn peut retourner deux valeurs ou plus avec la syntaxe suivante:
func SommeEtMoyenne (a []float) (float,float) {
somme := 0.0
for _, x := range a {
somme += x
}
return somme,somme/len(a)
}
somme, moyenne := SommeEtMoyenne(a)
Defer
modifier defer fonction(....)
Entraîne l'exécution différée d'une commande à la sortie de la fonction courante. Par exemple, juste après avoir ouvert un fichier, on peut différer sa fermeture par:
defer fichier.Close()
ce qui fait que le fichier sera fermé quoi qu'il arrive avant de quitter la fonction. Les commandes enregistrées par 'defer' sont exécutées dans l'ordre inverse de leur déclaration: la dernière déclarée sera la première exécutée.
Fonctions anonymes
modifierLes fonctions anonymes sont un des types de base de Go. On peut donc stocker une fonction dans un tableau et dans n'importe quelle variable dont le type est défini comme étant:
func (arguments, ...) retour
On déclare une fonction littérale par la syntaxe suivante :
func (arguments, ...) retour { corps de la fonction }