我真的是,傻逼,大傻逼,真的。
事情是这样的,今天用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,毕竟谁都会手滑,但是,只因我太年轻,唉