Web Analytics

一文搞懂Go语言中的切片排序

本文首发于“Gopher部落”知识星球! 切片是Go语言中引入的用于在大多数场合替代数组的语法元素。切片是长度可变的同类型元素序列,它不支持存储不同类型的元素,当然如果你非用**sl := []interface{}{“hello”, 11, 3.14}**来抬杠^_^,那就另当别论。 ...

November 26, 2020 · 7 min · Tony Bai

Go,11周年

本文翻译自Go官方博客文章《Eleven Years of Go》,原作者:Russ Cox。 今天,我们一起庆祝Go语言正式开业发布11周年。去年的“Go turning 10”周年庆典聚会似乎已成为久远的回忆。这是艰难的一年,但我们一直保持了Go开发的步伐,并积累了很多亮点。 ...

November 11, 2020 · 8 min · Tony Bai

系统学习Go语言,有这几本书就够了!

1. Go语言的发展现状 如果从2007年9月20日那个下午三个“程序员大佬”在谷歌总部的一间办公室里进行的一次有关设计一门新编程语言的讨论算起,那么Go语言已经度过了自己的13个年头了。 Robert Griesemer、Rob Pike和Ken Thompson 如果从2009年11月10日Go语言正式开源发布算起,Go语言也即将迎来自己的第11个生日。 ...

November 4, 2020 · 12 min · Tony Bai

Go语言之禅

本文翻译自Go社区知名Gopher和博主Dave Cheney的文章《The Zen of Go》。 本文来自我在GopherCon Israel 2020上的演讲。文章很长:) 如果您希望阅读精简版,请移步到the-zen-of-go.netlify.com。 该演讲视频还未上线。如上线,我会把它更新到本文中的。 ...

February 24, 2020 · 23 min · Tony Bai

Go官方发布的go.dev给gopher们带来了什么

众所周知,Go是一个诞生于Google内部的编程语言,它在2009年11月份开源,在开源后立即受到了来自全世界开发人员的关注与贡献。但初期的Go语言的发展依旧是由Go核心团队的若干leader决定的,这种类“民主集中制”的方法延续了若干年。直到Go核心团队逐渐意识到Go应该更多倾听社区的声音,并让更多的gopher参与到Go项目的开发和贡献中来,甚至影响和决定一些语言特定的演化。于是Go团队开始特意为Go社区发展招兵买马。像Steve Francia、Francesc Campoy(后已经从google离职加入Dgraph)等都是在这个阶段加入Go team的。 Go团队在很长一段时间里尤其重视与社区的互动,比如连续多年发起Go user调查、Gophercon大会后的Go team与社区的见面会和分组讨论、去GOPATH降低Go入门学习曲线、发布Go新品牌标识、添加Go module机制、改善官网等。 ...

November 14, 2019 · 5 min · Tony Bai

Go语言的遗产

本文是gohugo作者Steve Francia在意大利佛罗伦萨举办的GoLab上分享的闭幕演讲讲稿的文字版,该演讲的主题为”Go的遗产”。该演讲讨论了Go语言继承的遗产,以及它是如何尊重这些遗产的,并在最后总结了Go希望留给后来者的遗产。 演讲胶片 我们有责任保留好留给我们的遗产,并留下值得我们子孙后代继承的遗产 – 克里斯汀·格雷格(Christine Gregoire) ...

November 4, 2019 · 22 min · Tony Bai

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

2019年对于Go语言来说也是一个重要的年份,因为在2019年的11月10日,Go即将迎来其开源10周年的纪念日。在这个重要日子的前夕,在GopherCon 2019大会后,Go项目组在2019.9.4日发布了Go 1.13版本。 这是自2017年GopherCon大会上Russ Cox做“Toward Go 2″主题演讲以来Go项目发布的第四个版本(前三个分别是:go 1.10、go 1.11和go 1.12)。 ...

October 27, 2019 · 12 min · Tony Bai

Go 1.13中的错误处理

介绍 在过去的十年中, Go的errors are values的理念在编码实践中运行得也很良好。尽管标准库对错误处理的的支持很少(只有errors.New和fmt.Errorf函数可以用来构造仅包含字符串消息的错误),但是内置的error接口使Go程序员可以添加所需的任何信息。它所需要的只是一个实现Error方法的类型: type QueryError struct { Query string Err error } func (e *QueryError) Error() string { return e.Query + ": " + e.Err.Error() } 像这样的错误类型无处不在,它们存储的信息变化很大,从时间戳到文件名再到服务器地址。通常,该信息包括另一个较低级别的错误以提供其他上下文信息。 ...

October 18, 2019 · 9 min · Tony Bai

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

转眼间又近年底,距8月25日Go 1.11版本正式发布已过去快三个月了。由于种种原因,Go语言发布变化系列的Go 1.11版本没能及时放出。近期网课发布上线后,个人时间压力稍缓和。又恰看到近期Go 1.12 release note的initial version已经加入到master,于是这篇文章便上升到个人Todo list的Top3的位置,我也尽一切可能的碎片时间收集素材,撰写文章内容。这个时候谈Go 1.11,总有炒“冷饭”的嫌疑,虽然这碗饭还有一定温度^_^。 ...

November 19, 2018 · 16 min · Tony Bai

Go,9周年

本文翻译自Go官方博客:《Nine years of Go》。 介绍 今天是我们的Go语言初始版本开源的第九个周年纪念日。在每个周年纪念日上,我们都希望花些时间思考过去一年发生的事情。过去12个月对Go语言和Go社区来说是突破性的一年。 对Go的爱和接纳 感谢你们所有人,2018年对Go来说是美好的一年!在多个行业调查中,Gopher们表达了他们使用Go的快乐程度,并且许多非Go开发者也表示了他们打算在其他语言之前优先学习Go。 ...

November 12, 2018 · 4 min · Tony Bai