golang-sql-Exec支持变量参数吗



如何将函数的可变参数传递给SQL.db Exec函数?

此代码

func dbExecOne(db *sql.DB, cmd string, args ...interface{}) error {
if _, err := db.Exec(cmd, args); err != nil {
return fmt.Errorf("db execute[%s, %s] %q", cmd, args, err)
}
return nil
}  

调用时会产生此错误。如果不能做到这一点,有没有其他方法,比如使用lambda来捕获命令和参数?

dbExecOne(db, "insert into junk values($1, $2)", 99, "foo")
db execute[insert into junk values($1, $2), [%!s(int=99) foo]]
"sql: converting argument $1 type: unsupported type []interface {}, a slice of interface"

您可以使用...运算符将切片的元素分布在可变参数上,如下所示:

db.Exec(cmd, args...)

有关更多信息,请参阅语言规范

最新更新