Stmt.Query()
tiene un parámetro variádico:
func (s *Stmt) Query(args ...interface{}) (*Rows, error)
Esto significa que puede usar los puntos suspensivos ...
para pasar un valor de segmento como el valor del parámetro variádico, pero ese segmento debe ser del tipo []interface{}
, por ejemplo:
var args []interface{}
for _, v := range r.Form["type"] {
t, _ := strconv.Atoi(v)
args = append(args, t)
}
// ...
rows, err := stmt.Query(args...)
Como alternativa, puede crear previamente la consulta SQL y ejecutarla sin pasar los argumentos de la consulta; para ver un ejemplo, consulte Cláusula Go e IN en Postgres .