这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源( GitHub : polaris1119/golangweekly[1] ),欢迎投稿,推荐或自荐文章/软件/资源等,请 提交 issue[2] 。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:今天家里领导生日,借周刊祝她生日快乐!
刊首语
自从官方发布 泛型 修订草案后,各种关于泛型的信息很多:比如基于泛型的 Hashmap 实现,基于泛型的测试驱动开发,基于泛型的错误处理等等。今天还发现另外一个项目,基于 Go 泛型草案的专门研究项目:。
所以,无论你喜不喜欢泛型,泛型到来是迟早的事情。
资讯
1、 grpc-go 1.30 发布[3]
gRPC 的 Go 语言实现。基于 HTTP/2 的RPC。
2、 go-imap 1.0.5 发布[4]
imap 的客户端和服务端库。
3、 Gitea 1.12.0 和 1.12.1 发布[5]
我们很自豪地介绍 Gitea 1.12.0 版本,以及随后的 1.12.1 版本并提供一些修补程序。
4、 2020年开发者生态报告:很多人计划迁移到 Go
JetBrains 发布了 2020 开发者生态报告,该报告基于 34,000 多个开发人员的反馈。其中, 参与调查的开发人员中,20% 的人来自中国、美国和印度则分别占比19% 和 17%。报告内容除了此前曾包含的 15 种语言和数十种技术之外,今年还添加了一些新的部分:R 语言、微服务、测试、大数据,甚至是开发者的生活方式。
5、 Beego V2 Roadmap[6]
2.0.x 版本 (暂定截止2020年底)。
文章
1、 万字长文解读 pkg.go.dev 的设计和实现
文章较长,建议收藏,抽完整时间阅读。
2、 如何科学选择一门 编程语言 ?理性选择,我依然选 Go
如果你看到这篇文章,很有可能,在你的职业生涯中,你至少有一次在思考应该选择哪种语言。或者你甚至在编程生涯开始之前就已经考虑了。很高兴你能看到这篇文章。
3、 Go 语言 源码 阅读有感 nocopy 机制
读Go源码时,发现一个高频注释语句 “XXX must not be copied after first use”。例如 sync 包下的Pool、Cond、WaitGroup、Mutex、Map 和 atomoic.Vaule、strings.Builder 等,都有该句注释。
4、 为什么容器内存占用居高不下,频频 OOM(续)[7]
在上周的文章《为什么容器内存占用居高不下,频频 OOM》 中,我根据现状进行了分析和说明,收到了很多读者的建议和疑惑,因此有了这一篇文章,包含更进一步的说明和排查。
5、 苹果宣布 Mac 放弃 x86 转向 ARM:看看你要补充学习知识吗?
作为一名程序员,我们不应该只是“哇哦”感叹一声就完事了。关于这一点:苹果公司宣布 Mac 电脑将转向公司自主定制的处理器,也就是放弃 x86 架构,转向 ARM 架构,你应该特别关注下。
6、 Go 字符串 中的潜在问题
在 Go 中,几乎所有的字符串操作都是不复制的,仅仅是从原字符串取一个子集(例如去除字符串首尾的空白字符),因此你可以更自由地操作字符串。这个机制可以非常直接地解决你的问题,并且非常高效。
7、 Go 每日一库之 cli
cli 是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库 cobra。在功能上来说两者差不多, cobra 的优势是提供了一个脚手架,方便开发。cli 非常简洁,所有的初始化操作就是创建一个 cli.App 结构的对象。通过为对象的字段赋值来添加相应的功能。
8、 为什么你写的代码总是有 Bug?用它来保证 Go 代码质量
这篇文章是集成测试系列两个部分中的第二部分。本文中的示例可以从 代码仓库 获取。
9、 面试题:如何更新 Go Module 项目的依赖 — 解决问题的方法很重要
这篇文章来自知识星球球友的问题。
10、 GORM源码解读[8]
GORM 源码解读, 基于 v1.9.11[9] 版本。
11、 受 express .js 启发,用 20 行代码写出更清晰易用的 Go 中间件 API
在使用 Go 编写复杂的服务时,您将遇到一个典型的主题是中间件。这个话题在网上被讨论了一次又一次。
开源项目
1、 goplus[10]
七牛开源的与 Go 语言完全兼容的面向数据科学的语言(前身:qlang)。近期推广力度很大。在 GitHub 趋势榜上升也很快。
2、 goc: 系统测试覆盖率收集利器[11] ( CarlJi[12] 投稿)
在 goc 以前,业界在做覆盖率收集时,都是采用一种很 tricky 的方式来做,有种种不优雅的地方。而 goc 能够让被测程序在运行时就可以收集系统测试覆盖率,当属比较优雅。且此种方式,也为 go 语言的精准测试方向,展现了无限可能。
3、 go-wechaty[13]
Go 实现的微信聊天机器人。
4、 fgprof[14]
兼容 Go 原生 profiler 的 profiler,支持非 cpu 时间(比如 IO 时间)采样。
5、 binclude[15]
将静态文件包含到 Go 二进制文件 中的另一种方法。
6、 survey[16]
用于构建交互式提示的库。
7、 tcardgen[17]
Twitter 卡片图像生成器。
8、 go-envconfig[18]
一个通过结构体类型标记绑定方式读取环境变量的配置库。
9、 cato[19]
Go 项目的自动配置文档库。
10、 gaia[20]
Gaia 是一个开源自动化平台,可以轻松有趣地以任何编程语言构建强大的管道。
11、 tgraph[21]
Tgraph 是一个 Go 包,用于在终端中绘制基本图形。它受到 的启发,这是一个 Python 库。
资源&&工具
1、 油管 视频: 测试驱动 Go2 新泛型[22]
泛型都测试驱动了。
2、 免费电子书: How To Code in Go eBook[23] (英文)
这本知识共享许可的 600 页书籍非常适合初学者。
3、 gosec[24]
Go 代码安全扫描工具。
4、 sharingan[25]
didi 出品的流量录制回放工具。
5、 format[26]
用于格式化 common lisp 代码的 Go 库。
6、 gopkgs[27]
一个自定义 Go 包的 import path 的命令行工具。
7、 SourceCodeVisualizer[28]
Go 源码可视化。除了 Go 语言,还支持 C/C++、Python 和 Perl。对于看的代码的层次结构有一定帮助。
8、 drago[29]
wireguard 网络配置工具。
9、 goarrange[30]
按照 godoc 的方式自动重排声明。
10、 memplot[31]
在单个二进制文件内非常快速地生成进程的内存使用情况的映像图。
订阅
这个周刊每周日发布,同步更新在 Go语言中文网[32] 和 微信公众号[33] 。
参考资料
[1]
polaris1119/golangweekly:
[2]
提交 issue:
[3]
grpc-go 1.30 发布:
[4]
go-imap 1.0.5 发布:
[5]
Gitea 1.12.0 和 1.12.1 发布:
[6]
Beego V2 Roadmap:
[7]
为什么容器内存占用居高不下,频频 OOM(续):
[8]
GORM源码解读:
[9]
v1.9.11:
[10]
goplus:
[11]
goc: 系统测试覆盖率收集利器:
[12]
CarlJi:
[13]
go-wechaty:
[14]
fgprof:
[15]
binclude:
[16]
survey:
[17]
tcardgen:
[18]
go-envconfig:
[19]
cato:
[20]
gaia:
[21]
tgraph:
[22]
油管视频: 测试驱动 Go2 新泛型:
[23]
免费电子书: How To Code in Go eBook:
[24]
gosec:
[25]
sharingan:
[26]
format:
[27]
gopkgs:
[28]
SourceCodeVisualizer:
[29]
drago:
[30]
goarrange:
[31]
memplot:
[32]
Go语言中文网:
[33]
微信公众号: