Lihat ini https://stackoverflow.com/questions/20271123/go -lang-sql-in-parameters jawaban yang menjadi dasar jawaban saya. Dengan menggunakan itu Anda dapat melakukan sesuatu seperti ini:
var myMap = make(map[string]interface{})
rows, err := db.Query("SELECT * FROM myTable")
defer rows.Close()
if err != nil {
log.Fatal(err)
}
colNames, err := rows.Columns()
if err != nil {
log.Fatal(err)
}
cols := make([]interface{}, len(colNames))
colPtrs := make([]interface{}, len(colNames))
for i := 0; i < len(colNames); i++ {
colPtrs[i] = &cols[i]
}
for rows.Next() {
err = rows.Scan(colPtrs...)
if err != nil {
log.Fatal(err)
}
for i, col := range cols {
myMap[colNames[i]] = col
}
// Do something with the map
for key, val := range myMap {
fmt.Println("Key:", key, "Value Type:", reflect.TypeOf(val))
}
}
Dengan menggunakan paket refleksi, Anda kemudian bisa mendapatkan Jenis untuk setiap kolom sesuai kebutuhan seperti yang ditunjukkan dengan loop di akhir.
Ini umum dan akan bekerja dengan tabel apa pun, jumlah kolom, dll.