Go语言爱好者周刊:第 101 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:各国语言识别
刊首语
上期周刊题目正确率 45%。题目如下。
Go 版本 1.12 以上,以下代码输出什么?
package main
import (
"fmt"
)
func main() {
m := map[string]int{"foo": 0, "bar": 1, "baz": 2}
for k := range m {
if k == "foo" {
delete(m, "bar")
}
if k == "bar" {
delete(m, "foo")
}
}
fmt.Println(m)
}
A:map[baz:2 foo:0];B:map[bar:1 baz:2];C:map[baz:2];D:不确定
正确答案:D。因为 map 中元素顺序是随机的,因此结果不确定,每次运行结果可能不一样。
本期的题目是 Go101 发的一道题:
package main
var n = -99
func main() {
m := make(map[string]int, n)
println(m["Go"])
}
A:0;B:panic;C:不知道
资讯
这是第 100 个发布。
2、读写锁性能提升
Dmitry Vyukov 提交一个变更,该变更是的读写锁的写锁性能有 40% 以上的大幅提升。
说起 Go 的优点,很多人会提到 Go 拥有强大的标准库,比如开发一个 HTTP 服务,几行代码就搞定。不过,如果是一个 PHPer 转到 Go,又会觉得 Go 标准库不够便利,很多东西都需要自己二次封装。这其实是一个取舍的问题。
Go 官方宣布,在 StackOverflow 上启用新的问答社区,而这之前,官方的主要在 Google Groups。
5、真任性
Go 核心团队安静两周(6.26 ~ 7.11)。
谁在招 Gopher
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
文章
1、为什么 Go 关心 unsafe.Pointer 和 uintptr 之间的差别
Go 有两样东西或多或少是无类型指针的表示:uintptr 和 unsafe.Pointer (和外表相反,它们是内置类型)。
Go 实现了两个包来产生随机数。
Go GC 的作用是回收不再使用的内存。实现的算法是并发的三色标记和清除回收法。本中文,我们研究三色标记法,以及各个颜色的不同用处。
Go GC 能够帮助到开发者,通过自动地释放掉一些程序中不再需要使用的内存。
答案你来给?
本文是问题排查经历以及容器 IO 流转原理分析。
本文整理自字节跳动(火山引擎)基础架构/服务框架团队负责人成国柱在 QCon 2021 的分享,主要介绍了 2018-2021 年间,服务框架团队在 Golang 服务框架和 Service Mesh 上的技术实践和经验总结。
开源项目
最准确的 Go 自然语言检测库,长文本和短文本均适用。迄今为止支持 75 种语言
2、survey
建立交互式提示的库。
3、naml
用 raw go 替换 kubernetes yaml 的框架。
4、smocker
简单高效的 HTTP Mock 服务和代理。
5、pipeline
一个帮助你在 Go 中创建流水线的库。
资源&&工具
1、musgo
用于序列化和反序列化 Go 对象的代码生成器。
Go 实现的基于命令行的时间跟踪工具。
3、mahi
多合一的 HTTP 服务,用于文件的上传、处理、服务和存储。
4、liqo
实现跨 Kubernetes 集群的动态和分散的资源共享。
5、plow
Go 实时 Web UI 和终端显示的高性能 HTTP 基准测试工具。
6、dud
Go 实现的用于与源代码一起版本控制数据的工具。
TDD 是如何帮助我们更好地开发 Go 代码,原理与实践。
8、elvish
Go 实现的交互式 shell。
Go 命令行实用命令。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。