Как связать несколько переменных и слайс переменной в то же время, когда excute MySQL обновление SQL, как обновление .. где .. в? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть некоторые строковые переменные и переменная среза в качестве параметров SQL в golang, но при попытке выполнения возвращаются ошибки corresponding parameter is non-variadic.
Так как я могу связать эти переменные в этом случае?

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
    }
    ... ...
}

я новый парень суслика ..
Надеюсь на вашу помощь, спасибо

1 Ответ

1 голос
/ 08 октября 2019

Поскольку у вас есть фиксированное количество аргументов и вариационный, вы должны собрать их все в массив и передать их, потому что go variadics не может справиться с тем, что вы пытаетесь сделать:

args:=[]interface{}{foo,baz,bar}
for _,x:=range pars {
  args=append(args,x)
}
tx.Exec(stmt,args...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...