我真的是,傻逼,大傻逼,真的。

事情是这样的,今天用gorm写了一个查询,用的是原生的SQL语句,结果Scan到一个slice里面,就是这么简单,一切照常写,代码类似这样子:

err = DB.Raw("select * from users").Scan(users).Error

乍一看代码没问题,嗯,乍一看,然后你猜怎着,panic了,报错如下:

reflect: reflect.Value.Set using unaddressable value

终究还是太年轻,一时间没反应过来,研究了半天,都不知道咋回事,半小时就这么过去了

然后我们再仔细看看上面的代码,发现,好像少了什么东西,对没错,Scan传入的应该是一个指针,但是我他妈的,手滑了,正确的写法应该是这样的:

err = DB.Raw("select * from users").Scan(&users).Error

我特么真的是,服了。。。

这里记录一下,这应该算是一个很常见的panic,毕竟谁都会手滑,但是,只因我太年轻,唉

最后修改:2021 年 09 月 29 日
如果觉得我的文章对你有用,请随意赞赏