देखें यह https://stackoverflow.com/questions/20271123/go -लैंग-एसक्यूएल-इन-पैरामीटर उत्तर जिस पर मेरा उत्तर आधारित है। इसका इस्तेमाल करके आप कुछ इस तरह कर सकते हैं:
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))
}
}
रिफ्लेक्ट पैकेज का उपयोग करके आप अंत में लूप के साथ दिखाए गए अनुसार आवश्यकतानुसार प्रत्येक कॉलम के लिए टाइप प्राप्त कर सकते हैं।
यह सामान्य है और किसी भी तालिका, स्तंभों की संख्या आदि के साथ काम करेगा।