Go reflect.Value.Set使用不可寻址的值
这是使用slice从表中获取和显示用户的代码,slice是gorm产生的以下错误 reflect.Value.Set使用不可寻址的值Go reflect.Value.Set使用不可寻址的值,go,go-gorm,Go,Go Gorm,这是使用slice从表中获取和显示用户的代码,slice是gorm产生的以下错误 reflect.Value.Set使用不可寻址的值 必须使用指向切片的指针调用Find g.GET("/", func(c echo.Context) error { var users []models.User err := db.Find(users).Error if err != nil { fmt.Println(err) } return c.J
必须使用指向切片的指针调用Find
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文件:仅对S.Diego的答案进行澄清,更改如下:
err := db.Find(&users).Error
为此:
err := db.Find(users).Error
错误表明,变量用户不可寻址,因为它不是指针。与公认的答案非常相似(但上下文略有不同),我在不同的项目中不断犯下错误:
err := db.Find(&users).Error
变成
func migrate(db *gorm.DB) {
db.AutoMigrate(User{}, Activity{})
}
注意符号。然后我得到了一个零引用错误,我通过在前面包含driverand create users slice来解决它:users=make([]models.User,0)这比go gorm更通用
go-yaml
的Unmarshal
在传递未正确使用符号的内容时也会遇到同样的问题。(不是技术术语,而是实际情况)
func migrate(db *gorm.DB) {
db.AutoMigrate(&User{}, &Activity{})
}