将数组作为参数拆包

所以在Python和Ruby中,有一个splat操作符(*)用于将数组作为参数解包。 在JavaScript中有.apply()函数。 在Go中有没有一种方法来parsing数组/片段作为函数参数? 任何资源,这将是伟大的!

一些沿着这条线:

func my_func(a, b int) (int) { return a + b } func main() { arr := []int{2,4} sum := my_func(arr) } 

如果我犯了句法错误,我会表示歉意。 我是新来的。

您可以使用类似于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) } 

现在你可以总结尽可能多的东西,你想要的。 注意当你调用my_func函数之后的重要...

运行示例: http : //ideone.com/8htWfx

要么你的函数是可变参数,你可以像Hunter McMillen所显示的那样用...符号来表示函数,或者你的函数有固定数量的参数,你可以在编写代码的时候解压缩它们。

如果你真的想dynamic地在一个固定数量的参数的函数上做这个,你可以使用reflection:

 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) } 

不,这个语言没有直接的支持。 Python和Ruby,以及你提到的Javascript; 都是dynamic/脚本语言。 Go比C更接近于dynamic语言。 “应用”function适用于dynamic语言,但对于像C或Go这样的静态语言却很less使用,