猿问

Golang 记录 ID 为 0

我有以下汽车模型和汽车切片:


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。我试图找出原因,但无法找到。有人知道吗?


拉风的咖菲猫
浏览 111回答 1
1回答

哆啦的时光机

database/sql包不提供直接将数据扫描到结构中,您应该遍历从数据库查询返回的行,然后将数据扫描到结构中,如下所示:var cars []carsfor 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")
随时随地看视频慕课网APP

相关分类

Go
我要回答