Fonctions Go Variadic

Les fonctions variadiques sont des fonctions qui acceptent un nombre illimité d'arguments. En règle générale, ils sont exprimés sous la forme

func hello(friends ...string) {
    // ...
}

Très facile à reconnaître grâce aux 3 points....

On peut appelerhello()comme ça:

hello("tony", "mark", "mary", "joe")

ou:

hello("tony")

ou avec un nombre infini de chaînes.

Un exemple de la bibliothèque standard:append()

appendest une fonction variadique, définie comme

func append(slice []Type, elems ...Type) []Type

Une utilisation courante est lors de la suppression d'un élément à la positionià partir d'un tableaua.

a = append(a[:i], a[i+1:]...)

Cette ligne crée une nouvelle tranche en supprimant l'élément à la positionidansa, en combinant les éléments de 0 à i (non inclus), et de i + 1 à la fin.

Quel est le but de...?

appendaccepte une tranche comme premier argument, et un nombre illimité d'arguments, tous avec un typeassignableau type de ses éléments.

L'écriture

a = append(a[:i], a[i+1:]...)

équivaut à l'écriture

a = append(a[:i], a[i+1], a[i+2], a[i+3], a[i+4]) //and so on, until the end of the slice.

Utilisanta[i+1:]...est essentiellement une syntaxe abrégée, comme le décrit la spécification Go danshttps://golang.org/ref/spec#Passing_arguments_to_..._parameters:

Si f est variadique avec un paramètre final p de type… T, alors dans f le type de p équivaut au type [] T. Si f est invoqué sans argument réel pour p, la valeur passée à p est nulle. Sinon, la valeur passée est une nouvelle tranche de type [] T avec un nouveau tableau sous-jacent dont les éléments successifs sont les arguments réels, qui doivent tous être assignables à T

Terrain de jeux


Plus de tutoriels go: