本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。

 

鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。

Go语言爱好者周刊:第 18 期_周刊

 

题图:来自 golangweekly.com

刊首语

几个值得在刊首提的事情:

1、问答方面,能找到的较少,后续考虑引入 stackoverflow.com,工作量不小;欢迎大家贡献相关资源,提到 https://github.com/polaris1119/golangweekly/issues ;leetcode 的方面的面试题也会是考虑的资源;

2、Go 语言中文网深圳 Meetup 定在 12 月 15 日举行,免费报名地址:http://hdxu.cn/AVyKG

3、Go.Dev 本土化项目:golangclub 在自愿者的努力下,目前完成了很大一部分。

Go语言爱好者周刊:第 18 期_周刊_02

golangclub

资讯

1、cli 2.0: 快速构建 cli 应用[3]

一个历史悠久的库,今年重新焕发了生命。这是 v2 手册[4],其中显示了所有主要功能。

2、Google App Engine 现在支持 Go1.13[5]

目前处于测试阶段,但将 App Engine 带入了基于模块的世界,“用户普遍反馈其内存占用减少了 20%-50%”。

3、BadgerDB v2.0 发布[6]

Badger 是 Go 驱动的键值存储,可支持 DGraph 的许多功能。

4、Go 官方发起 2019 用户调查[7]

欢迎 Go 爱好者参与。

问答

1、Go 中 在 for 里 的 print[8]

注意 print 和 fmt.Print 的区别。之前分享过。

2、为什么 golang time 包中的 Unix 函数要返回 int64?[9]

你觉得什么原因呢?

3、应届生学 Java 还是 go 好,我现在是 php,勿笑,急?[10]

作为老司机的你觉得怎么选?

文章

1、Go 开发过程中总是要停下来编译:用它解决你的烦恼,快乐编程

这样的工具可能不少,这里推荐的 air[11] 可以试试。

2、从 Go 开源项目 BigCache 学习加速并发访问和避免高额的 GC 开销

BigCache 是一个快速,支持并发访问,自淘汰的内存型缓存,可以在存储大量元素时依然保持高性能。BigCache 将元素保存在堆上却避免了 GC 的开销。

3、在国外远程办公是一种怎样的体验?

受到 Go 语言中文网的站长 P 神和公司内其它同事的鼓励,我经过反复思考,决定写下这篇文章描述一下我在 Sourcegraph 这家公司作为一名软件工程师的日常。

4、由一个简单程序图解 Go 语言内存分配和管理

Go 程序的内存从申请阶段到不再使用后的释放阶段都由 Go 标准库自动管理。尽管管理工作不需要开发者参与,但是 Go 对内存管理的底层实现做了非常好的优化,里面充满了有意思的知识点,还是值得我们学习的。

5、golang 避坑指南(1)interface 之坑多多

interface 时 golang 编程中使用得非常频繁的特性,我们需要明白它的底层结构,以及一些编译和运行时的特殊之处,能帮我们避免一些不必要的麻烦。

6、为什么 golang 没有 volatile?

从 java 转 golang 程序员可能会有一个疑问:为什么 golang 没有 volatile 关键字?这样的话如何保证可见性?

7、深入浅出 Golang Runtime

基于 2019.02 发布的 go 1.12 linux amd64 版本, 主要介绍了 Runtime 一些原理和实现的一些细节, 对大家容易不容易理解或者网络上很多错误的地方做一些梳理!超长文章。

8、深入理解 Golang 之 http server[12]

对于 Golang 来说,实现一个简单的http server非常容易,只需要短短几行代码。同时有了协程的加持,Go 实现的http server能够取得非常优秀的性能。这篇文章将会对 go 标准库net/http实现 http 服务的原理进行较为深入的探究,以此来学习了解网络编程的常见范式以及设计思路。

9、Go 命令行解析 flag 包之快速上手

本篇文章是 Go 标准库 flag 包的快速上手篇。

10、编程书说的“Go 程序员应该让聚合类型的零值也具有意义”是在讲什么[13]

在《Go 语言编程》这本书和很多其他 Go 编程教程中很多都提到过“Go 程序员应该让一些聚合类型的零值也具有意义”的概念,我们这篇文章主要说一下有意义的零值这个话题。

11、go 学习笔记之咬文嚼字带你弄清楚 defer 延迟函数

温故知新不忘延迟基础。

12、Golang 生态:使用 viper 管理配置

通过配置,我们可以动态地改变程序的行为,常用的方式包括配置文件,命令行参数,环境变量等。

13、用 Go 重构 C 语言系统,这个抗住春晚红包的百度转发引擎承接了万亿流量

百度的万亿流量转发引擎 BFE 登上了 GitHub Trending Top 3!

14、【Golang 源码系列】一:Map 实现原理分析

学而思网校技术团队出品。

开源项目

1、Rare: 实时正则表达式提取器[14]

支持将结果聚合展现为各种格式,如直方图,数值汇总,表格等。

2、gocloc: Go 语言版 cloc(代码行统计工具)[15]

之前推荐过另外一个工具 scc[16]。

3、nebula[17]

在 Slack 每台服务器上运行的可扩展 overlay 网络工具,提供了一个全球覆盖网络。

4、RedisShake[18]

阿里开源的 Redis 数据同步工具,Go 语言实现。

5、gosearch[19]

通过命令行搜索 pkg.go.dev 上的 Go package。

6、Fastzip[20]

注重性能的zip存档和提取器。

7、ffuf[21]

用 Go 编写的快速网络模糊器。

8、termcolor[22]

检测终端是否支持颜色。

Go语言爱好者周刊:第 18 期_周刊_03

 

9、ff[23]

用 Go 编写的终端上的文件管理器。

资源&&工具

1、Go Time:106 期,代码编辑器与语言服务器(language server)[24]

Go Time 还是挺不错的,有点类似国内的 Go 夜读?

2、Go Time: 107 期[25]

关于使用 Go 编写编译器和解释器的话题。

3、NATS 在 k8s 上的一键安装工具[26]

4、用 Go 编写的 UNIX ed (line editor) 克隆版本[27]

古老的编辑器。

5、musig: 一个类似 Shazam 的音乐识别工具[28]

对于想要托管自己的类似 Shazam 的服务以从音频样本中识别音乐的所有人,请 Star!

6、Gin 框架系列

  • Gin 框架系列 - 安装和路由配置
  • Gin 框架系列 - 日志记录:Logrus 如何用?
  • Gin 框架系列 - 数据绑定和验证
  • Gin 框架系列 - 自定义错误处理
  • Gin 框架系列 - 你是如何组织项目目录的?
  • Gin 框架系列 - 使用 go modules 包管理工具

Go语言爱好者周刊:第 18 期_周刊_04

img

后续不断发布~

订阅

这个周刊每周日发布,同步更新在Go 语言中文网[29]、微信公众号[30] 和 今日头条[31]。

 

Go语言爱好者周刊:第 18 期_周刊_05

wechat

文中链接

[1]

polaris1119/golangweekly: https://github.com/polaris1119/golangweekly

[2]

提交 issue: https://github.com/polaris1119/golangweekly/issues

[3]

cli 2.0: 快速构建 cli 应用: https://github.com/urfave/cli

[4]

v2 手册: https://github.com/urfave/cli/blob/master/docs/v2/manual.md

[5]

Google App Engine 现在支持 Go1.13: https://cloud.google.com/blog/products/application-development/updating-app-engine-with-more-new-runtimes

[6]

BadgerDB v2.0 发布: https://blog.dgraph.io/post/releasing-badger-v2/

[7]

Go 官方发起 2019 用户调查: https://google.qualtrics.com/jfe/form/SV_b1xqnBCMpZAhJZ3

[8]

Go 中 在 for 里 的 print: https://segmentfault.com/q/1010000021078297

[9]

为什么golang time包中的Unix函数要返回int64?: https://segmentfault.com/q/1010000021080161

[10]

应届生学Java还是go好,我现在是php,勿笑,急?: https://www.zhihu.com/question/356754225

[11]

air: https://github.com/cosmtrek/air

[12]

深入理解Golang之http server: https://juejin.im/post/5dd11baff265da0c0c1fe813

[13]

编程书说的“Go程序员应该让聚合类型的零值也具有意义”是在讲什么: https://segmentfault.com/a/1190000021098323

[14]

Rare: 实时正则表达式提取器: https://github.com/zix99/rare

[15]

gocloc: Go语言版cloc(代码行统计工具): https://github.com/hhatto/gocloc

[16]

scc: https://github.com/boyter/scc

[17]

nebula: https://github.com/slackhq/nebula

[18]

RedisShake: https://github.com/alibaba/RedisShake

[19]

gosearch: https://github.com/mingrammer/gosearch

[20]

Fastzip: https://github.com/saracen/fastzip

[21]

ffuf: https://github.com/ffuf/ffuf

[22]

termcolor: https://github.com/efekarakus/termcolor

[23]

ff: https://github.com/skanehira/ff

[24]

Go Time:106 期,代码编辑器与语言服务器(language server): https://changelog.com/gotime/106

[25]

Go Time: 107 期: https://changelog.com/gotime/107

[26]

NATS 在 k8s 上的一键安装工具: https://github.com/nats-io/k8s

[27]

用 Go 编写的 UNIX ed (line editor) 克隆版本: https://github.com/prologic/ed

[28]

musig: 一个类似 Shazam 的音乐识别工具: https://github.com/sfluor/musig

[29]

Go语言中文网: https://studygolang.com/go/weekly

[30]

微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91

[31]

今日头条: https://www.toutiao.com/c/user/59903081459/#mid=1586087918877709

 

推荐阅读