我有一个看起来像的结构: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 回答
- 0 关注
- 188 浏览
添加回答
举报
0/150
提交
取消