29 votes

Que signifie "..." à côté d'un paramètre dans une déclaration de fonction go ?

Je parcourais du code écrit dans le langage Go de Google, et je suis tombé sur ceci :

func Statusln(a ...interface{})
func Statusf(format string, a ...interface{})

Je ne comprends pas ce que le ... signifie. Quelqu'un le sait-il ?

32voto

tux21b Points 17336

Cela signifie que vous pouvez appeler Statusln avec un nombre variable d'arguments . Par exemple, l'appel de cette fonction avec :

Statusln("hello", "world", 42)

Attribue au paramètre a la valeur suivante :

a := []interface{}{"hello", "world", 42}

Ainsi, vous pouvez itérer sur cette tranche a et traiter tous les paramètres, quel que soit leur nombre. Un bon cas d'utilisation populaire des arguments variables est par exemple fmt.Printf() qui prend une chaîne de format et un nombre variable d'arguments qui seront formatés selon la chaîne de format.

7voto

Shannon Points 1579

Ils sont fonctions variadiques . Ils acceptent un nombre variable d'arguments.

6voto

om-nom-nom Points 33691

C'est un argument de longueur variable

func Printf(format string, v ...interface{}) (n int, err error) {

Prenez par exemple cette signature. Ici, nous définissons que nous avons une chaîne à imprimer, mais cette chaîne peut être interpolé avec un nombre variable de choses (de type arbitraire) à substimer (en fait, j'ai pris cette fonction du paquet fmt) :

fmt.Printf("just i: %v", i)
fmt.Printf("i: %v and j: %v",i,j)

Comme vous pouvez le voir ici, avec des arguments variadiques, une signature s'adapte à toutes les longueurs.

De plus, vous pouvez spécifier un type exact comme ...int .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X