sql >> Base de Datos >  >> RDS >> Mysql

Golang MySQL consultando una cantidad indefinida de argumentos usando el operador IN

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 .