以下是用例:我正在尝试动态构建可变参数(这意味着我需要存储它们),然后我需要将它们传递给可变参数函数。该功能具有以下签名。失败的代码如下。这样做的正确方法是什么?
// 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
答案 0 :(得分:2)
您还必须在add函数上应用spread运算符。 错误代码似乎有点奇怪,但正确的代码应如下所示:
var args = make([]interface{}, 0, 5)
func add(params ...interface{}) {
args = append(args, params...)
}
Select(&dest, query, args...)