在 Golang 中使用 database/sql 包:当这些参数对于封闭函数来说也是“args ...any”时,如何将可变数量的参数传递给 SQL 查询?
所以查询函数有这样的格式
rows, err = db.query(statement string, args ...any)
但它是在另一个函数中执行的,并且(除其他外)语句和参数本身都是该函数的参数。
因此只显示重要的部分:
func SomeFunc({other parms not relevant to the query}, db *sql.DB, statement string, args ...any) {
. . .
rows, err = db.query(statement, args)
. . .
}
但是失败了,因为现在传递给 SomeFunc 的参数已变成
[]interface{}
,因此我收到 SQL 错误:
converting argument $1 type: unsupported type []interface {}, a slice of interface
我错过了什么吗? 如何将可变数量的参数传递给函数,然后将其传递给 db.query 函数?
database/sql包的
query()
函数接受interface{}
或any
类型的可变参数,也就是说它接受
interface{}
的可变个数。要解压 []interface{}
,请使用 ...
,例如:
rows, err = db.query(statement, args...)