我在这里关注了一个线程并想出了这个var b ButtonqueryErr := connection.QueryRow("SELECT id_printer, name, has_children FROM button WHERE id_parent IS NULL;").Scan(&b.ID, &b.Name, &b.Children)if queryErr != nil { response, err := json.MarshalIndent(b, "", " ") fmt.Fprint(w, string(response)) if err != nil { log.Println("Error on jsonmarshalindent Starter") }} else { log.Println("Error on queryErr starter") log.Println(queryErr) fmt.Fprint(w, "Error getting starter button")}它有两个问题:它打破了 b.Children我不知道如何动态制作它。例如,查询返回3行,但这取决于公司的客户,可以是3或任何数字。结构是type Starter struct { Buttons []Button `json:buttons`}type Button struct { ID int `json:id` Name string `json:name` Children bool `json:children`}有人可以对此有所了解吗?
1 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
对于 bool,它取决于实际列的类型。如果它不是布尔值,则不会直接映射。
您可能需要先存储在一个临时变量中,然后转换并分配给 Button 中的字段以进行匹配。
至于读取所有行,这里有一个改编自docs的例子。
您使用 Query 而不是 QueryRow 来获取所有行。
rows, err := db.Query("SELECT id_printer, name, has_children FROM button WHERE id_parent IS NULL;")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var buttons []Button
for rows.Next() {
var b Button
if err := rows.Scan(&b.ID, &b.Name, &b.Children); err != nil {
log.Fatal(err)
}
buttons = append(buttons,b)
}
// At this point, you have all your rows in the "buttons" variable
- 1 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消