Stmt.Query()
có một tham số đa dạng:
func (s *Stmt) Query(args ...interface{}) (*Rows, error)
Điều này có nghĩa là bạn có thể sử dụng dấu chấm lửng ...
để chuyển một giá trị lát cắt làm giá trị của thông số đa dạng, nhưng lát cắt đó phải thuộc loại []interface{}
, ví dụ:
var args []interface{}
for _, v := range r.Form["type"] {
t, _ := strconv.Atoi(v)
args = append(args, t)
}
// ...
rows, err := stmt.Query(args...)
Thay vào đó, bạn có thể tạo trước truy vấn SQL và thực thi mà không cần chuyển đối số truy vấn, ví dụ, hãy xem Mệnh đề Go và IN trong Postgres .