Go语言爱好者周刊:第 132 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:冬奥会闭幕,完美九宫格。
刊首语
简单解释下上期题目。以下代码输出什么?
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan bool)
go func() {
<-ch
fmt.Print("Goroutine")
}()
time.Sleep(2 * time.Second)
close(ch)
time.Sleep(3 * time.Second)
fmt.Print("Main")
}
A:Groutine;B:Main;C:Goroutine;D:GoroutineMain
正确答案:D。考点在于 close channel 后,<-ch 会立马返回。
本期题目来自微信群里朋友的一个提问,稍作修改。以下代码输出什么?
package main
import (
"fmt"
)
func main() {
a := make([]int, 0, 5)
addElem(a, 5)
fmt.Println(a)
}
func addElem(a []int, i int) {
a = append(a, 5)
}
A:[];B:[5];C:[5 0 0 0 0];D:[0 0 0 0 0]
资讯
强大 TUI 框架。
Go 1.18 终于迎来了 RC 版本,离正式发布越来越近了,预计会再发一个 RC2,然后就是正式版本了。这次正式版本稍微有点 Delay,预计 3 月份发布。
文章
在 GopherCon 2021 年大会上,Go 两位作者 Robert Griesemer 和 Ian Lance Taylor 做了泛型相关的演讲,即将在 Go1.18 发布的 Go 泛型,正是两位设计的。
本文讲述的令牌桶线路算法可以比较好的处理固定时间窗口限流无法处理突然请求洪峰情况。
3、把Go的BoltDB用在生产环境,结果18000台服务器瘫痪了
BoltDB 设计有些问题。
系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章。
本文将使用 eBPF uprobes 检测 Go 垃圾收集器。
6、程序员技术选型:写Go还是Java?网友:Rust不香?
本文作者根据自己的使用体验,详细对比了 Go 和 Java 的使用差异,给了开发者们一个中肯的选用参考。
信号量是并发编程中常见的同步机制,在标准库的并发原语中使用频繁,比如 Mutex、WaitGroup 等,这些并发原语的实现都有信号量的影子,所以我们很有必要学好弄清楚信号量的实现原理,做到“知其然,更要知其所以然”。
开源项目
1、fq
类似 jq,但用于二进制文件。
2、XMM
完美逃逸 Go GC 机制的 Go 内存管理器。
3、tcg
终端单元图形库。
4、kita
声明式、响应式 GUI 工具包,用于使用单一代码库构建基于 Web 技术的跨平台应用程序。
资源&&工具
1、spew
为 Go 数据结构实现一个深度打印,以帮助调试。
2、maintidx
衡量每个 Go 函数的可维护性指数。
Go 与 MLOps。
Go1.18 中的其他特性。
5、gitfofo
利用 github api,帮你找到感兴趣的人。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。