3 回答

TA贡献1834条经验 获得超8个赞
清醒一点:你也可以分配一个接口而不是制作一个切片
以下代码效果很好:
var sql = "select * from table"
rows, err := db.Query(sql)
columns, err = rows.Columns()
colNum := len(columns)
var values = make([]interface{}, colNum)
for i, _ := range values {
var ii interface{}
values[i] = &ii
}
for rows.Next() {
err := rows.Scan(values...)
for i, colName := range columns {
var raw_value = *(values[i].(*interface{}))
var raw_type = reflect.TypeOf(raw_value)
fmt.Println(colName,raw_type,raw_value)
}
}

TA贡献1898条经验 获得超8个赞
我认为您不需要为此进行反射 - 您可以使用切片和...运算符将多个值传递给可变参数函数。
col := rows.Columns()
vals := make([]interface{}, col)
rows.Scan(vals...)
我可能误解了你想要做什么!
- 3 回答
- 0 关注
- 238 浏览
添加回答
举报