在gorm中查询出来的结果可以使用Scan()函数映射到自定义的struct中。示例如下:
type User struct {
ID uint gorm:"primary_key"
Name string
Age int
CreatedAt time.Time
}
// 查询
var user User
db.Where("name = ?", "jinzhu").Find(&user)
fmt.Println(user.Name) // jinzhu
// 手动扫描
var name string
var age int
db.Table("users").Select("name, age").Where("id = ?", 111).Scan(&name, &age)
fmt.Println(name, age)
// 批量扫描
type Result struct {
Name string
Age int
}
var results []Result
db.Table("users").Select("name, age").Where("age > ?", 18).Scan(&results)
fmt.Println(len(results)) // 数量
请注意,使用Scan()函数将查询结果映射到struct时,结构体字段的标记标签需要正确设置,以便gorm映射值到结构体的字段。另外,Scan()函数也可以用于手动扫描或批量扫描,当然前提是你清楚你的查询会返回什么。