基于的答案。使用它,您可以执行以下操作:
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)) }}然后,使用反射包,您可以根据需要获取每列的类型,如循环末尾所示。
这是通用的,适用于任何表,列数等。



