我有一个查询正在使用sql.db中的namedargs,在生成时出现了一个错误
cannot use args (type []sql.NamedArg) as type []interface {} in argument to stmt.Exec
sql库中的示例显示了它的用途:
Example usage:
db.ExecContext(ctx, `
delete from Invoice
where
TimeCreated < @end
and TimeCreated >= @start;`,
sql.Named("start", startTime),
sql.Named("end", endTime),
)
唯一的区别是我现在使用的是一个准备好的语句 stmt
打电话给 Exec
方法。我用我的值创建了一个namedarg片段,它使用 ...
扩展器。
res, err := stmt.Exec(args...)
当示例显示 sql.Named()
方法直接在代码中调用?为什么扩展的切片不起作用?
1条答案
按热度按时间inb24sb21#
这就是在go中向变量函数传递参数的工作原理。可以传递任何类型的单个值,也可以传入元素类型与可变参数类型完全匹配的切片,并在其后面加上
...
.i、 e.您可以:
或者你可以: