在golang中存储和传递可变参数?

时间:2016-10-18 06:54:22

标签: go variadic-functions

以下是用例:我正在尝试动态构建可变参数(这意味着我需要存储它们),然后我需要将它们传递给可变参数函数。该功能具有以下签名。失败的代码如下。这样做的正确方法是什么?

// variadic function
func Select(dest interface{}, query string, args ...interface{}) error

//failing code
var args = make([]interface{}, 0, 5)

func add(params ...interface{}) {
   args = append(args, params)
}

Select(&dest, query, args...)

//error is sql: converting Exec argument #0's type: unsupported type []interface {}, a slice

1 个答案:

答案 0 :(得分:2)

您还必须在add函数上应用spread运算符。 错误代码似乎有点奇怪,但正确的代码应如下所示:

var args = make([]interface{}, 0, 5)

func add(params ...interface{}) {
   args = append(args, params...)
}

Select(&dest, query, args...)