go db.QueryRow(sql).Scan 能将结果集Scan到一个map里面去吗?

如题,可以实现吗?

我自己写的,他一直提示不是一个指针。

func selectOne(id int) {
    res := map[string]*interface{}{"id": nil, "name": nil, "password": nil, "add_time": nil}
    fmt.Println(res)

    sql := "select * from test where id = ?"
    err := db.QueryRow(sql, id).Scan(res["id"], res["name"], res["password"], res["add_time"])

    if err != nil {
        fmt.Println("获取数据失败:", err.Error())
    } else {
        fmt.Println(res)
    }
}
阅读 3.9k
3 个回答

技术进步了,自问自答吧!

应该是 res 只声明了类型,却没有初始化,所以没有内存地址。

可以:

res := map[string]*interface{}{"id": 0, "name": “”, "password": “”, "add_time": 0}

你直接这样就行了

res := []map[string]interface{}{}
err := db.QueryRow(sql, id).Scan(&res)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题