Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Golang MySQL consultando uma quantidade indefinida de argumentos usando o operador IN


Stmt.Query() tem um parâmetro variadic:
func (s *Stmt) Query(args ...interface{}) (*Rows, error)

Isso significa que você pode usar as reticências ... para passar um valor de fatia como o valor do parâmetro variadic, mas essa fatia deve ser do tipo []interface{} , por exemplo.:
var args []interface{}
for _, v := range r.Form["type"] {
    t, _ := strconv.Atoi(v)
    args = append(args, t)
}

// ...

rows, err := stmt.Query(args...)

Como alternativa, você pode pré-compilar a consulta SQL e executar sem passar argumentos de consulta, por exemplo, consulte Cláusula Go e IN no Postgres .