だからPython and Ruby配列を引数として展開するためのsplat演算子(*)があります。Javascriptには.apply()関数があります。 Goで関数の引数として配列/スライスをアンパックする方法はありますか?このためのリソースも素晴らしいでしょう!
これに沿ったもの:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
構文上の/さまざまな間違いを犯した場合は謝罪します。 Goは初めてです。
Cに似たvararg構文を使用できます。
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)
}
これで、必要なものをいくつでも合計できます。 ...
関数を呼び出した後の重要なmy_func
に注意してください。
ハンターマクミレンが示すように、あなたの関数は...
表記でスライスを使用できる可変引数であるか、関数に固定数の引数があり、コードを記述するときにそれらをアンパックできます。
固定数の引数の関数でこれを本当に動的に行いたい場合は、リフレクションを使用できます。
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)
}