猿问

当执行mysql更新sql语句时,如何在go中同时绑定多变量和切片变量?

corresponding parameter is non-variadic我有一些字符串变量和一个切片变量作为 golang 中的 SQL 参数,但是当我尝试执行时返回错误。

那么在这种情况下我该如何绑定这些变量呢?


mysql 连接器:go-sql-driver/mysql

假代码:


func UpdateTblNm (foo, baz string, bar int, pars []string) error {

    stmt:= `update tbl_nm set foo=?, bar=? where baz=? and par in (?`+ strings.Repeat(", ?", len(pars)-1) + `)`

    if _, err := tx.Exec(stmt, foo, bar, baz, pars...); err!=nil {

        return err

    }

    ... ...

}

我是 gopher 的新人..

希望你的帮助,谢谢


杨__羊羊
浏览 86回答 1
1回答

慕标5832272

由于您有固定数量的参数和一个可变参数,因此您必须将它们全部收集到一个数组中,然后传递它们,因为 go 可变参数无法处理您想要执行的操作:args:=[]interface{}{foo,baz,bar}for _,x:=range pars {  args=append(args,x)}tx.Exec(stmt,args...)
随时随地看视频慕课网APP

相关分类

Go
我要回答