WARNING: undefined behavior - version of Delve is too old for Go version 1.21.9 (maximum supported version 1.18)
报错的原因是因为delve
版本低,不支持调试高版本的Go,解决方法如下:
可以使用Everthing类的工具,但通常的路径是这样的,你可以尝试直接定位:
C:\Users\fengqi\AppData\Roaming\JetBrains\IntelliJIdea2021.3\plugins\go\lib\dlv\windows\
如果是MacOS,通常的路径是这样的:
/Users/fengqi/Library/Application Support/JetBrains/IntelliJIdea2021.3/plugins/go/lib/dlv
可以参考文档 https://github.com/go-delve/delve/tree/master/Documentation/installation,或者直接下载源码编译,如果你和我一样使用go install
安装的,那么路径大概是在 C:\Users\fengqi\go\bin\dlv.exe
尝试重新开启调试。
]]>2021年的双十一我在京东购买了索尼的X91J 65英寸版本,同时幸运的使用了那个2000的特殊优惠券,感谢京东没有回收这个羊毛。
电视安装完成后,我开始着手构建自己的影音环境,在此之前,我是通过PT下载到NAS,然后电脑+2.0音箱播放,没有刮削,这之后我会转移到电视上来。
索尼电视使用的是和当贝合作的Android系统国内特供版,不过也允许用户随意的安装第三方应用,我进行了大量的尝试,最后只保留了Bilibili、Kodi、SmartTubeNext、Netflix、Aptoide这几个应用。
其中Kodi用来管理我从网络下载的电影和剧集,提供海报墙,观看进度跟踪,因为Kodi自带的刮削器不能满足我的需求,tinyMediaManager等半自动又太麻烦,所以我决定自制刮削器。
]]>type News struct {
Id int64 `json:"id" db:"id"`
GroupId int64 `json:"group_id" db:"group_id"`
}
news := &News{}
err := db.QueryRowx("select...", x).StructScan(news)
部分类库比如xorm
会尝试根据驼峰、下划线去对应,sqlx
并不会,而是会报panic级别的错误。
查看源码,发现StructScan内部调用了scanAny这个方法,继续往下看,可以发现这样一段代码:
fields := m.TraversalsByName(v.Type(), columns)
// if we are not unsafe and are missing fields, return an error
if f, err := missingFields(fields); err != nil && !r.unsafe {
return fmt.Errorf("missing destination name %s in %T", columns[f], dest)
}
这里判断是否有字段缺失,同时有个unsafe开关,如果没有打开,就会报错,unsafe是在初始化db链接的时候指定的,可以通过调用db.Unsafe()方法返回一个打开unsafe开关的db实例,至于是全局使用还是每次调用时指定,看你自己了。
PS: 如果愿意动动手,也可以通过db.Mapper = xx
覆盖默认的Mapper方法,其中包括字段名映射逻辑,比如把xorm的逻辑移植过来。