Go查看项目引用的包版本及当前最新的版本

2020-08-18 17:40:15

有时候我们需要知道当前项目引用的外部pkg是否是最新的版本,而如果通过go.mod里面一个一个去看明显显得有一点点弱,此时我们可以采用go list这个命令,直接查看当前项目的引用版本以及最新的版本,命令如下:
go list -u -m -f '{{if not .Indirect}}{{.}}{{end}}' all
执行后如下:

➜ go list -u -m -f '{{if not .Indirect}}{{.}}{{end}}' all
git.querycap.com/cloudchain/srv-centre
git.querycap.com/cloudchain/chain-sdk-go v1.1.2 [v1.1.3]
git.querycap.com/cloudchain/common-def v0.0.0-20200817131015-b62d7ad67a52
git.querycap.com/cloudchain/confclient/v2 v2.3.2
git.querycap.com/tools/conflogger/v2 v2.0.5 [v2.1.3]
git.querycap.com/tools/confmysql/v2 v2.0.2 [v2.0.5]
git.querycap.com/tools/confserver/v2 v2.0.8 [v2.4.4]

其中git.querycap.com/tools/confserver/v2 v2.0.8 [v2.4.4] 前面git.querycap.com/tools/confserver/v2表示pkg,随后是该pkg的当前版本,如果有版本更新则会用[]表示。

注:
详细用法见:https://wiki.jikexueyuan.com/project/go-command-tutorial/0.8.html

202006读书汇

《北上》 状态:100% finished 个人评价:good ) 偶然机会,看到了这本书,很多人在推荐。之前是不认识这本书的作者的,作者徐则臣,江苏东海人,毕业于北京大学中文系,现为《人民文学》副主编。他的作品有《耶路撒冷》《王城如海》《跑步穿过中关村》等。 故事从二十世纪初八国联军火烧圆明园到义和团扶清灭洋,再到日本侵略中国的战争到六七十年代的文化大革命,最后来到2014年大运河申遗成功这一年。这些都在运河的倒影里,时间里、土里、水里。 运河里打捞出的一封信 考古挖掘,打捞运河的时候,打捞出一封意大利军人写的信。 通过这封信,将我们带回到清末朝廷风雨飘摇的年代。八国联军攻打清政府,一把火烧了我们的圆明园。 通过这封信,我们了解到写信者马福德.迪马克并不想战争,他来中国的目的是追随元朝在中国记下运河故事的马可.菠萝的脚步。 洋鬼子小波罗的北上之路也是亲情之路 小波罗冒充学者,假装对运河很感兴趣,雇佣了做过淮安漕运衙门公职人员的谢平遥做他的随船翻译,再加上一个挑夫邵常来,他们就从苏州随运河开始北上了。一路上但凡有城池的地方,他们就会弃船登陆,走一走逛一逛,

golang 判断interface是否为空nil

前言 interface很好用,可以存取任意类型,但我们在使用这个值类型的时候我们往往又需要知道该interface是属于哪种类型的,以便正确使用这个值。比如,如果我们提前知道该interface为int,则都是这样使用: var a interface{} a = 5 fmt.Println(2*a.(int)) 而往往我们interface可能会存放多种不同类型的数据,为了健壮,在使用时我们需要判断interface里面存放的到底为何种类型的数据,以及这些数据是否为空?比如你引用了一个类型里面的空对象是很容易引发panic的。 我们通过什么方式判断interface是否为空呢? 先明确一点:一个interface里面存在动态类型和动态值,只有当动态类型和动态值都为空时,该interface才为空(nil) 比如: package main import "fmt" func main(){ var a interface{} = nil var b interface{} = (*int)(nil) fmt.Println(a=