这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub: polaris1119/golangweekly[1] ),欢迎投稿,推荐或自荐文章/软件/资源等,请 提交 issue[2] 。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:GitHub CLI 1.0 正式发布
刊首语
gopls 0.5.0 发布,内存有了很大的提升。使用 VSCode 等文本编辑器开发 Go 的福音。为此站长 送出 2 本 《Go语言编程之旅》 ,参与方式点击这里。
附上一道简单的题:
package main
const cl = 100
var bl = 123
func main() {
println(&bl, bl)
println(&cl, cl)
}
以上代码是否正确?为什么?
资讯
1、gopls 0.5.0 发布
内存占用大幅降低。
2、 Git Hub CLI 1.0 正式版发布
据说极客都喜欢这种终端命令模式。
3、 Yaegi 0.9 发布[3]
一个优雅的 Go 解释器。可以用于其他应用程序中的脚本编写,交互式 shell 或快速原型制作。你可以将其用作 REPL 或将其嵌入到自己的应用中。
4、 Go 泛型如何实现的讨论[4]
同时 Keith Randall 提出的两个实现方案。
- 模板方案:
- 字典方案:
文章
1、在 Go 语言中,我为什么使用接口
接口在 Go 语言中的意义。
2、有想过如何为 Go 语言增加一个语句吗?
这是探讨 Go 编译器的文章,向 Go 语言添加了一条新语句。
3、Go 和 Java 对比学习:单例模式
你常用语言的单例模式如何实现的呢?
4、Goroutine 是轻量的,但也得正确使用:通过 GODEBUG 提升对 Goroutine 的使用
Go 协程是轻量的,在很多场景能提升你的程序性能。不幸的是,如果使用不当,也可能降低你程序的性能,因为 Go 协程的上线文切换也需要消耗一定的资源。
5、漏桶、令牌桶限流算法的 Go 语言实现
限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。
6、记一次线上性能调优:火焰图是利器
面对性能调优问题,很多人往往只是单纯的套用既往的经验:先试试一个,不行再试试另一个。
7、Go 编程的三个常见问题
作者在文章中列举了使用 Go 语言过程碰到的三个常见问题,并且都给出了解决方法,一起来看下作者是怎么解决的!
8、 极端情况下收缩 Go 的线程数[5]
在 Go 的 runtime 里有一些创建了就没法回收的东西。
9、一篇短文介绍 Defer 是如何工作的
意犹未尽。
开源项目
1、 bluetooth[6]
Go 的跨平台蓝牙 API,tinygo 使用。
2、 datatable[7]
一个 Go 内存表。用于处理表格数据,例如 excel 电子表格。受 pandas python 包和 data.frame R 结构的启发。
3、 gota[8]
这是 Go 编程语言的 DataFrames,Series 和数据整理方法的实现。
4、 2048[9]
Golang 中 2048 游戏的 CLI 实现。
5、 gomajor[10]
帮助你简化 module 主版本号升级的工具。
6、 gogit[11]
用 Go 语言实现 git 内部命令。同时学习 Git 和 Go。
7、 vssh[12]
通过 SSH 大规模执行命令。雅虎出品。
8、 ali[13]
生成 HTTP 负载并实时绘制结。
资源&&工具
1、 modgv[14]
将 go mod graph 输出转换为 Graphviz 的 DOT 语言,以图形方式可视化项目的依赖关系。
2、 yarr[15]
一个 rss 阅读器。
3、 leaf[16]
通用的热编译工具。监视工作目录中的更改,并在文件更新时运行指定的命令。
4、 go-immutable-radix[17]
Go 中的不可变基数树(radix)实现。
5、 mvn-golang[18]
用于构建 Go 应用的 maven 插件。
6、 crlfuzz[19]
用 Go 语言编写的快速扫描 CRLF 漏洞的工具。
7、 go-wechaty[20]
Go 语言编写的面向聊天机器人的对话式 微信 SDK。
参考资料
[1]
polaris1119/golangweekly:
[2]
提交 issue:
[3]
Yaegi 0.9 发布:
[4]
Go 泛型如何实现的讨论:
[5]
极端情况下收缩 Go 的线程数:
[6]
bluetooth:
[7]
datatable:
[8]
gota:
[9]
2048:
[10]
gomajor:
[11]
gogit:
[12]
vssh:
[13]
ali:
[14]
modgv:
[15]
yarr:
[16]
leaf:
[17]
go-immutable-radix:
[18]
mvn-golang:
[19]
crlfuzz:
[20]
go-wechaty:
[21]
Go语言中文网:
[22]
微信公众号: