func (this *Mysql) Result(sql string) ([]map[string]interface{}, error) {
rows, err := this.link.Query(sql)
errorHandler(err)
res_fileds, _ := rows.Columns()
cache := make([]interface{}, len(res_fileds))
for index, _ := range cache {
var a interface{}
cache[index] = &a
}
var list []map[string]interface{}
for rows.Next() {
_ = rows.Scan(cache...)
item := make(map[string]interface{})
for i, data := range cache {
item[res_fileds[i]] = *data.(*interface{})
}
list = append(list, item)
}
_ = rows.Close()
return list, nil
}
以上代码从网上找的,其中:item[res_fileds[i]] = *data.(*interface{}) 这句是什么意思,我知道是取出数据,但这个语法不懂
`res_fields` 应该是所有的字段名, 比如包含 `id`, `name`的切片, data 就是查询mysql的出来的值, 他在for循环每一行的结果然后进行拼装map再添加到切片中;
没必要用这个代码, 直接用 `gorm` 查询就行;
你可以参考下我的项目 https://github.com/shixiaofeia/fly, /pkg/mysql 有gorm的封装以及使用用例;
#1