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

Golang 记录 ID 为 0

Golang 记录 ID 为 0

Go
拉风的咖菲猫 2023-03-29 15:39:48
我有以下汽车模型和汽车切片:type Car struct {    ID     int    `json:"id"`    Name  string `json:"title"`}var cars []Car在 Postgres 数据库上,我创建了一个cars表来保存汽车记录。create table cars (id serial, name varchar);并保存了一些汽车记录:insert into cars (name) values ('Toyota');insert into cars (name) values ('Lexus');使用增量整数 ID 1 和 2 成功创建记录。在我的 Go 服务器中,我进行以下查询以获取汽车记录:db.Query("SELECT * from cars").Rows(&cars)for _, car := range cars {    fmt.Println(car)}虽然有响应,但每条记录的 id 都为 0。我试图找出原因,但无法找到。有人知道吗?
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

database/sql包不提供直接将数据扫描到结构中,您应该遍历从数据库查询返回的行,然后将数据扫描到结构中,如下所示:


var cars []cars

for rows.Next() {

        var car cars

        err = rows.Scan(&c.ID, &c.Name)

        if err != nil {

                log.Fatalf("Scan: %v", err)

        }

        cars = append(cars, car)

}

fmt.Println(cars)

或者您可以使用 sql 包名称sqlx的扩展名,这将使您可以直接将结果扫描到结构的切片中,如下所示:


cars := []cars{}

db.Select(&cars, "SELECT * from cars")


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

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