Donc, en Python et Ruby, il y a l'opérateur splat (*) pour décompresser un tableau en arguments. En Javascript, il y a la fonction .apply (). Existe-t-il un moyen de décompresser un tableau / une tranche en tant qu'arguments de fonction dans Go? Toutes les ressources pour cela seraient également formidables!
Quelque chose dans le sens de ceci:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
Je m'excuse si je fais des erreurs syntaxiques / assorties. Je suis nouveau sur Go.
go
argument-unpacking
mangeronphil
la source
la source
arr
n'est pas un tableau. C'est une tranche .Réponses:
Vous pouvez utiliser une syntaxe vararg similaire à C:
Vous pouvez maintenant additionner autant de choses que vous le souhaitez. Notez l'important
...
après lorsque vous appelez lamy_func
fonction.Exemple d'exécution: http://ideone.com/8htWfx
la source
Soit votre fonction est varargs, dans laquelle vous pouvez utiliser une tranche avec la
...
notation comme le montre Hunter McMillen, soit votre fonction a un nombre fixe d'arguments et vous pouvez les décompresser lors de l'écriture de votre code.Si vous voulez vraiment faire cela dynamiquement sur une fonction de nombre fixe d'arguments, vous pouvez utiliser la réflexion:
la source
https://play.golang.org/p/2nN6kjHXIsd
J'ai eu une raison de décompresser certains vars d'une chaîne map [string] avec des guillemets simples autour de certains d'entre eux ainsi que sans. Voici la logique pour cela et le lien de lecture en haut contient l'extrait de code complet.
Qui se présente proprement pour une requête mssql comme:
la source
Non, il n'y a pas de support direct pour cela dans la langue. Python et Ruby, ainsi que Javascript que vous mentionnez; sont tous des langages dynamiques / de script. Go est bien plus proche, par exemple, de C que de n'importe quel langage dynamique. La fonctionnalité `` appliquer '' est pratique pour les langages dynamiques, mais peu utile pour les langages statiques comme C ou Go,
la source