本文介绍了go语言如何把mysql查询的数据保存到结构体或者map啊?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题
github.com/go-sql-driver/mysql
type data struct {
    id int
    name string
    weight int
}
rows, _ := db.Query("select * from test where id = ?", 2)
for rows.Next() {
    line := data{}
    err = rows.Scan(&line)
    log.Println(line)
}

运行结果

2017/07/17 13:37:50 {0  0}

存到map的代码

    rows, _ := db.Query("select * from test where id = ?", 2)
    columns, _ := rows.Columns()
    length := len(columns)
    for rows.Next() {
        value := make([]interface{}, length)
        columnPointers := make([]interface{}, length)
        for i:=0;i<length;i++ {
            columnPointers[i] = &value[i]
        }
        rows.Scan(columnPointers...)
        data := make(map[string]interface{})
        for i:=0;i<length;i++ {
            columnName := columns[i]
            columnValue := columnPointers[i].(*interface{})
            data[columnName] = *columnValue
        }
        log.Print(data)
    }

有效果,但是看不懂为何要这样写

解决方案
err
scanrows.Scan(&line.id, &line.name, &line.weight)

PS: 不想用ORM的话,你可以用 https://github.com/jmoiron/sqlx 这个包来简化一些操作。

这篇关于go语言如何把mysql查询的数据保存到结构体或者map啊?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!