Go 1.18版本正式发布了

本文永久链接 – https://tonybai.com/2022/03/16/go-1-18-released 美国时间2022年3月15日,Go核心团队官宣了Go 1.18版本正式版的发布!这是一个万众期待的版本,因为在这个版本中,Go核心团队做了Go语言开源以来的最大一次语法特性变更 – 增加了对泛型(generics)的支持!下面是对Go官博文章的全文翻译,供大家参考! ...

March 16, 2022 · 3 min · Tony Bai

聊聊Go语言的软件供应链安全

本文永久链接 – https://tonybai.com/2022/03/14/software-supply-chain-security-in-go 在Go 12岁生日以及Go 1.18 beta1发布的博文中,Go核心团队技术负责人Russ Cox都提到了2022年Go团队将关注Go软件供应链安全,并在Go中为软件供应链提供相关工具。 ...

March 14, 2022 · 11 min · Tony Bai

为什么有了Go module后“依赖地狱”问题依然存在

本文永久链接 – https://tonybai.com/2022/03/12/dependency-hell-in-go 如果所有Gopher都抛弃GOPATH构建模式,拥抱Go module构建模式;如果所有legacy Go package作者都能为自己的legacy package加上go.mod;如果所有Go module作者都严格遵守语义版本(semver)规范,那么Go将彻底解决“依赖地狱”问题。 ...

March 12, 2022 · 12 min · Tony Bai

“Go语言第一课”结课了

本文永久链接 – https://tonybai.com/2022/02/17/go-first-course-close 就在家家户户刚刚过完虎年元宵佳节之际,我的Go语言专栏:《Tony Bai·Go语言第一课》也迎来了它的最后一讲结术语。 这门专栏的撰写开始于2021年5月中旬,翻看我用于管理专栏原始文稿的github仓库的commit log记录,这一有纪念价值的日子被精确定位在5月16日: ...

February 17, 2022 · 5 min · Tony Bai

2021年Go语言盘点:厉兵秣马强技能,蓄势待发新征程

本文永久链接 – https://tonybai.com/2022/01/16/the-2021-review-of-go-programming-language 由于日常忙工作,闲时忙专栏,我早已策划的2021年Go语言盘点这篇文章一直拖到了2022年元旦之后才开始落笔。 2021年,Go迈过了其开源的第12个年头。虽然已经演进了10余年,但在编程语言这个领域中,Go依旧属于“小字辈”,仍处于快速的成长演化期。 纵观整个2021年,如果要用一句话来形容Go语言的发展,那就是厉兵秣马,蓄势待发。“厉兵秣马”这个成语的意思是把兵器磨快,把战马喂饱,形容做好战备,也比喻事前做好准备工作。那么2021年的Go究竟在为什么做准备呢?毫无疑问,它就是2022年泛型语法特性的落地。泛型既是Go社区最关注的语法特性,也是Go在语言特性方面的又一个“杀手锏”。 ...

January 16, 2022 · 12 min · Tony Bai

2021年博客回顾与总结

本文永久链接 – https://tonybai.com/2021/12/31/2021-blog-summary 2021年对我来说是极其充实的一年。 在这一年里,生活上的充实体现在带娃上。除了要带不到一岁的二宝,还要辅导大宝学习,陪大宝上补习班。 工作中,由于我刚入行智能网联汽车这个行业,要学的东西很多,要做的东西也很很多,要解决的问题同样很多,每天都十分忙碌。 ...

December 31, 2021 · 4 min · Tony Bai

Go 1.17中值得关注的几个变化

本文永久链接 – https://tonybai.com/2021/08/17/some-changes-in-go-1-17 Go核心开发团队在去年GopherCon大会上给Go泛型的定调是在2022年2月份的Go 1.18版本中发布,那可是自Go诞生以来语法规范变动最大的一次,这让包括笔者在内的全世界的Gopher们都满怀期待。 不过别忘了,在Go 1.18这个“网红版本”发布前,还有一个“实力派”版本Go 1.17呢!美国当地时间2021年8月16日,Go 1.17版本在经过两个RC版本之后正式发布!并且值得庆幸的是Go 1.17版本并没有过多受到Go 1.18版本这个“网红”的影响,Go 1.17默默地加入和优化了着实不少的特性。在这一篇文章中,我们就来看看Go 1.17版本中有哪些值得关注的变化。 ...

August 17, 2021 · 8 min · Tony Bai

Hugo作者、Go核心开发团队成员谈诞生13年的Go语言:生态系统、演化与未来[译]

本文翻译自《Go Language at 13 Years: Ecosystem, Evolution, and Future in Conversation with Steve Francia》。 译注:Go开源于2009年,如果从那时算起,Go才11岁;但在Go核心开发团队眼中,Go的真正诞生年份是2007年,至今13个年头了。关于Go的演化简史可以参见我的专栏文章:《Go语言的前生今世》。 本文要点: Go的简单性让你可以快速上手使用它–你可以在一个下午就消化掉整个Go语言规范; 作者认为Go是当今最好的现代语言之一(其他的还包括:Dart、Flutter和Rust); Go的未来是由它的开源社区决定的,它对所有的功能建议进行讨论和辩论。除非达成明确的共识,否则该功能不会被实现。 社区的规模大约每18个月翻一番。 最初,Go的早期采用者多来自python或ruby等动态语言的开发人员,现在随着语言的成熟,来自Java、.NET和C++程序员也开始接纳并使用Go。 在充满挑战的一年里,社区适应了相互支持,出现了多个meetup,并出现了新的资源。 编程语言的历史只朝着一个方向发展,每一种新的语言的出现都让事情都变得越来越复杂,越来越抽象。然而,就在十几年前,Go在Google诞生了。这种编程语言走的是另外一条路,它把赌注押在了简单和精心的设计和实现上。这个配方一直保留到今天,你可以直接开始写Go代码,没有太大的障碍。当你想到现代软件的大部分流行和可靠的作品都是用Go编写的,比如Docker、Kubernetes、Prometheus等,这就足以让你印象深刻。这个列表还在持续增加。为了了解Go从哪里来,更重要的是它要往哪里去,InfoQ联系了Google负责战略和产品的Go编程语言团队核心成员Steve Francia(译注:他也是知名静态站点生成工具gohugo的作者)。 ...

January 2, 2021 · 16 min · Tony Bai

2020年Go语言盘点:新冠大流行阻挡不了Go演进的步伐

2020,这一六十年一遇的庚子年的确“名不虚传”。在这一年发生了很多事,而最受瞩目的事情莫过于新冠疫情的全球大流行。疫情给全球的经济带来了近似毁灭性的打击,给人们的生命带来了极大威胁,给人们的生活也带来了很大痛苦及不确定性。好在这个糟糕的2020年马上就要过去了!相信此时此刻每个人心中都会有一句呐喊:“2020,快滚吧!”。 ...

December 30, 2020 · 12 min · Tony Bai

没有VPS搭建govanityurls服务?别急!你依然可以自定义Go包导入路径

我们见到的Go包的导入路径常常以github.com、bitbucket.org等代码托管站点的域名为前缀,这样的包导入路径有一个问题,那就是当Go包的托管站点发生变更时(比如从github.om迁移到bitbucket.org或gitlab.com),该包的使用者需要更新包的导入路径。当然,在支持go module+GOPROXY的情况下,如果使用者不再升级包版本,他/她完全可以继续使用原包导入路径,但这仅是特例。 还有一些包的导入路径并非以知名代码托管站点域名作为前缀,比如:Go官方扩展包text,它的包导入路径是golang.org/x/text,这种包导入路径被称为vanity import path,字面义是虚荣心导入路径,即以个人或组织官方域名作为前缀的包导入路径。采用vanity import path的包避免了包迁移对包使用者的影响。包使用者完全无需关心包的实际存储位置是在github上还是在bitbucket上或是私有服务器上。同时将vanity import path作为包的权威路径(canonical import path),也方便go get等对包权威路径的检查,避免包路径变更的前后不一致。 ...

November 15, 2020 · 7 min · Tony Bai