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 .