为了账号安全,请及时绑定邮箱和手机立即绑定

如何将结构指针转换为go中的类型指针列表

如何将结构指针转换为go中的类型指针列表

Go
吃鸡游戏 2021-05-15 19:23:50
我有一个看起来像的结构:type inv struct {    ID   int     `json:"id"`    Name string  `json:"name"`}我正在查询数据库中的一些数据(假设没有错误):rows, err := db.Query("select id, name from inv_table")通常,我必须通过扫描从该行中提取数据var i invfor rows.Next() {    rows.Scan(&i.ID, &i.Name)}我认为这可能有效(明天将进行测试):var i invfor rows.Next() {    var x []interface{} = [&i.ID, &i.Name]    rows.Scan(x... )}实际上,查询的结果集中还有更多列。rows.Scan(&i)或者至少:rows.Scan(getExportedValuePointers(&i)... )我想我总是可以编写某种编码器,但是,在我看来,盒子里应该已经有东西了。**我意识到我总是可以写一些类似于encode / xml或encode / json的反射代码...但我希望有人已经做到了。更新:下面的代码按预期的方式工作,但不是我想要的:package mainimport "fmt"type inv struct {    A int    B string}func main() {    var i inv    fmt.Printf("hello\n")    n, err := fmt.Sscan("1 c", &i.A, &i.B)    fmt.Printf("retval: %d %#v\n", n, err)    fmt.Printf("retval: %d, %s, %d %#v\n", i.A, i.B, n, err)    j := []interface{}{&i.A, &i.B}    k := []interface{}{i.A, i.B}    n, err = fmt.Sscan("2 d", j... )    fmt.Printf("retval: %d, %s, %d %#v\n", i.A, i.B, n, err)    fmt.Printf("retval: %d, %s\n", k... )}
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

没有什么可以自动执行此操作,但是您可以使用reflect包编写一个函数来执行此操作。



查看完整回答
反对 回复 2021-05-24
  • 2 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信