Ainsi, dans Python et Ruby, il existe un opérateur splat (*) permettant de décompresser un tableau sous forme d'arguments. En Javascript, la fonction .apply (). Il existe un moyen de décompresser un tableau/slice en tant qu’arguments de fonction dans Go? Toutes les ressources pour cela seraient également utiles!
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.
Vous pouvez utiliser une syntaxe vararg similaire à C:
package main
import "fmt"
func my_func( args ...int) int {
sum := 0
for _,v := range args {
sum = sum + v
}
return sum;
}
func main() {
arr := []int{2,4}
sum := my_func(arr...)
fmt.Println("Sum is ", sum)
}
Maintenant, vous pouvez résumer autant de choses que vous le souhaitez. Remarquez l'important ...
après quand vous appelez le my_func
une fonction.
Exemple en cours d'exécution: http://ideone.com/8htWfx
Soit votre fonction est varargs, dans laquelle vous pouvez utiliser une tranche avec le ...
notation comme le montre Hunter McMillen, ou votre fonction a un nombre fixe d’arguments que vous pouvez décompresser lors de l’écriture de votre code.
Si vous voulez vraiment faire cela dynamiquement sur une fonction à nombre d'arguments fixe, vous pouvez utiliser la réflexion:
package main
import "fmt"
import "reflect"
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
var args []reflect.Value
for _, x := range arr {
args = append(args, reflect.ValueOf(x))
}
fun := reflect.ValueOf(my_func)
result := fun.Call(args)
sum := result[0].Interface().(int)
fmt.Println("Sum is ", sum)
}