使用gorm查询数据库时reflect: reflect.flag.mustBeAssignable using unaddressable value

使用gorm写了个小的demo, 插入和查询单个数据库都正确显示,在查询all数据时报错了。

错误信息

重点信息:using unaddressable value

reflect: reflect.flag.mustBeAssignable using unaddressable value
C:/F/yqgopath/pkg/mod/github.com/jinzhu/gorm@v1.9.16/scope.go:865 (0xb197a6)
	(*Scope).callCallbacks.func1: panic(err)
C:/F/Go/src/runtime/panic.go:679 (0x430b8f)
	gopanic: reflectcall(nil, unsafe.Pointer(d.fn), deferArgs(d), uint32(d.siz), uint32(d.siz))
C:/F/Go/src/reflect/value.go:247 (0x48f54e)
	flag.mustBeAssignableSlow: panic("reflect: " + methodName() + " using unaddressable value")
C:/F/Go/src/reflect/value.go:234 (0x4957f1)
	flag.mustBeAssignable: f.mustBeAssignableSlow()
C:/F/Go/src/reflect/value.go:1531 (0x4957d8)
	Value.Set: v.mustBeAssignable()
C:/F/yqgopath/pkg/mod/github.com/jinzhu/gorm@v1.9.16/callback_query.go:48 (0xad949d)
	queryCallback: results.Set(reflect.MakeSlice(results.Type(), 0, 0))
C:/F/yqgopath/pkg/mod/github.com/jinzhu/gorm@v1.9.16/scope.go:869 (0xb03218)
	(*Scope).callCallbacks: (*f)(scope)
C:/F/yqgopath/pkg/mod/github.com/jinzhu/gorm@v1.9.16/main.go:354 (0xaf0e6e)
	(*DB).Find: return s.NewScope(out).inlineCondition(where...).callCallbacks(s.parent.callbacks.queries).db
C:/F/GoLandProjects/mygotutorials/ginconfigdemo/pkg/controller/user_controller.go:57 (0xb40d30)
	(*UserController).GetAllUsers: result := c.db.Find(users)
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/context.go:161 (0xa9bef1)
	(*Context).Next: c.handlers[c.index](c)
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/recovery.go:83 (0xab03ba)
	RecoveryWithWriter.func1: c.Next()
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/context.go:161 (0xa9bef1)
	(*Context).Next: c.handlers[c.index](c)
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/logger.go:241 (0xaaf4c7)
	LoggerWithConfig.func1: c.Next()
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/context.go:161 (0xa9bef1)
	(*Context).Next: c.handlers[c.index](c)
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/gin.go:409 (0xaa6653)
	(*Engine).handleHTTPRequest: c.Next()
C:/F/yqgopath/pkg/mod/github.com/gin-gonic/gin@v1.6.3/gin.go:367 (0xaa5d44)
	(*Engine).ServeHTTP: engine.handleHTTPRequest(c)
C:/F/Go/src/net/http/server.go:2802 (0x76e1fa)
	serverHandler.ServeHTTP: handler.ServeHTTP(rw, req)
C:/F/Go/src/net/http/server.go:1890 (0x7699cb)
	(*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req)
C:/F/Go/src/runtime/asm_amd64.s:1357 (0x45c1c0)
	goexit: BYTE	$0x90	// NOP
	````

仔细对比发现就是查询传入的不是值

```go
	users := make([]model.User, 0)
	//这里有问题,一直无法查询全部内容,因为没有使用&users, 而是users
	result := c.db.Find(&users)
	if result.Error != nil {
		klog.Infof("failed to find all, err:%s", result.Error)
	}

错误信息截图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值