en langue go
[]ssortingng
est un tableau de chaînes
et nous utilisons aussi ...ssortingng
comme paramètre
Quelle est la difference?
définition de fonction:
func f(args ...ssortingng) {}
et puis-je appeler cette fonction comme ci-dessous?
args := []ssortingng{"a", "b"} f(args)
[]ssortingng
est un tableau de chaînes
Techniquement, c’est une tranche qui référence un tableau sous-jacent
et nous utilisons aussi
...ssortingng
comme paramètreQuelle est la difference?
En ce qui concerne la structure, rien de vraiment. Le type de données résultant des deux syntaxes est identique.
La syntaxe du paramètre ...
fait un paramètre variadic. Il acceptera zéro ou plusieurs arguments de ssortingng
et les référencera comme une tranche.
En ce qui concerne l’appel de f
, vous pouvez passer une tranche de chaînes dans le paramètre variadic avec la syntaxe suivante:
func f(args ...ssortingng) { fmt.Println(len(args)) } args := []ssortingng{"a", "b"} f(args...)
Cette syntaxe est disponible pour la tranche créée à l’aide de la syntaxe littérale ou pour la tranche représentant le paramètre variadic (car il n’y a vraiment aucune différence entre elles) .
Les deux créent un tableau de chaînes, mais la différence réside dans la façon dont il est appelé.
func f(args ...ssortingng) { } // Would be called like this: f("foo","bar","baz");
Cela vous permet d’accepter un nombre variable d’arguments (tous du même type)
Un bon exemple de ceci est fmt.Print
et friends, qui peuvent accepter autant de ragments que vous le souhaitez.
Voici ce que vous voulez:
var args []ssortingng = []ssortingng{"A", "B", "C"} func Sample(args ...ssortingng) { for _, arg := range args { fmt.Println(arg) } } func main() { Sample(args...) }
Cela simplifie vos parameters de fonction. Voici un exemple ( https://play.golang.org/p/euMuy6IvaM ): La méthode SampleEllipsis accepte de zéro à plusieurs parameters du même type mais dans la méthode SampleArray, il est obligatoire de déclarer des arguments.
package main import "fmt" func SampleEllipsis(args ...ssortingng) { fmt.Printf("Sample ellipsis : %+v\n",args) } func SampleArray(args []ssortingng) { fmt.Println("Sample array ") SampleEllipsis(args...) } func main() { // Method one SampleEllipsis([]ssortingng{"A", "B", "C"}...) // Method two SampleEllipsis("A", "B", "C") // Method three SampleEllipsis() // Simple array SampleArray([]ssortingng{"A", "B", "C"}) // Simple array SampleArray([]ssortingng{}) }
Résultats :
Sample ellipsis : [ABC] Sample ellipsis : [ABC] Sample ellipsis : [] Sample array Sample ellipsis : [ABC] Sample array Sample ellipsis : []