Answers:
您可以使用类似于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
函数后,请注意重要事项。
运行示例:http://ideone.com/8htWfx
您的函数是varargs,您可以在其中使用带有...
Hunter McMillen显示的符号的切片,或者您的函数具有固定数量的参数,并且可以在编写代码时解压缩它们。
如果您真的想在固定数量的参数上动态地执行此操作,则可以使用反射:
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)
}
https://play.golang.org/p/2nN6kjHXIsd
我有理由从map [string]字符串中解压缩一些var,并在其中一些加上或不包括单引号。这是它的逻辑,并且顶部的播放链接具有完整的工作片段。
func unpack(a map[string]string) string {
var stmt, val string
var x, y []string
for k, v := range a {
x = append(x, k)
y = append(y, "'"+v+"'")
}
stmt = "INSERT INTO tdo.rca_trans_status (" + strings.Join(x, ", ")
val = ") VALUES (" + strings.Join(y, ",") + ");"
return stmt + val}
对于mssql查询,它清楚地呈现为:
INSERT INTO tdo.rca_trans_status (rca_json_body, original_org, md5sum, updated, rca_key) VALUES ('blob','EG','2343453463','2009-11-10 23:00:00','prb-180');
不,在此语言中没有直接支持。Python和Ruby,以及您提到的Javascript;都是动态/脚本语言。例如,Go比任何动态语言都更接近C。“应用”功能对于动态语言非常方便,但对于C或Go这样的静态语言却很少使用,
arr
不是数组。这是一片。