reflect.Value.Set使用无法寻址的值

时间:2017-08-22 05:48:32

标签: go go-gorm

g.GET("/", func(c echo.Context) error {
    var users []models.User
    err := db.Find(users).Error
    if err != nil {
        fmt.Println(err)
    }
    return c.JSON(http.StatusOK, users)
})

这是使用切片从表中获取和显示用户的代码,导致gorm

出现以下错误
  

reflect.Value.Set使用无法寻址的值

3 个答案:

答案 0 :(得分:13)

您必须使用指向切片的指针调用Find。

err := db.Find(&users).Error

相关的Gorm文档:http://jinzhu.me/gorm/crud.html#query

答案 1 :(得分:3)

只是为S.Diego答案添加澄清,改变这个:

err := db.Find(users).Error

到此:

err := db.Find(&users).Error

错误说,变量用户不可寻址,因为它不是指针。

答案 2 :(得分:3)

以与已接受的答案非常相似的方式(但是在稍微不同的上下文中),以及我在不同项目中不断犯的错误:

func migrate(db *gorm.DB) {
    db.AutoMigrate(User{}, Activity{})
}

成为

func migrate(db *gorm.DB) {
    db.AutoMigrate(&User{}, &Activity{})
}

请注意“&”号。