如何将函数的可变参数传递给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...)
有关更多信息,请参阅语言规范