这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
由于微信公众号不支持外链,文中大量链接可通过文末「阅读原文」查看。
题图:回顾 2022 年的 Go Gamedev,https://ebitengine.org/en/blog/2022.html。
上期的题目有提示 math.Inf 含义,正确率 55%,正确答案是 A。
以下代码输出什么?
package mainimport (
"fmt"
"math"
)
func main() {
// Inf returns positive infinity if sign >= 0, negative infinity if sign < 0.
x := math.Inf(1)
switch {
case x < 0, x > 0:
fmt.Println(x)
case x == 0:
fmt.Println("zero")
default:
fmt.Println("something else")
}
}
A:+Inf;B:zero;C:something else;D:doesn't compile
本期不出题目了,不少人可能身体不适,好好休息,多喝水!
1、Go 1.19.4 发布,同时 Go1.20 RC 也发布了
同时发布的还有 1.18.9。
2、hertz 0.4.2 发布[3]
一个 Golang 微服务 HTTP 框架。
3、dragonboat 3.3.6 发布[4]
一个高性能纯 Go 语言实现的多组 Raft 共识算法库。
4、Task 3.19.0 发布[5]
任务运行器,使用 Go 语言编写。类似 GNU Make,目标是比它更简单和易于使用。
5、FerretDB v0.7.0[6]
MongoDB 的替代品。之前叫 MangoDB,容易被人理解为碰瓷。
6、go-sql-driver/mysql 1.7 发布[7]
Go1.12 不再支持。
7、Kubernetes v1.26 发布[8]
主题是Electrifying。
1、这个好:Go 1.20 将支持 Wrapping 多个 errors
该项提案对错误处理进行了优化,与 Go 1.13 为错误处理提供的新功能有关:Error Wrapping。引入 Error Wrapping 后,Go 同时为 errors 包添加了 3 个工具函数,分别是 Unwrap 、 Is 和 As 。
提前看看究竟会有哪些新特性加入 Go。
3、Go streaming 库的性能比较[9]
随着 Generics to Go 1.18 的到来,Go 出现了一种新的编程模型:函数式流处理。这篇文章评估了一些当前提供此类功能的库,并比较了单线程流中实现的性能。
4、sonic :基于 JIT 技术的开源全场景高性能 JSON 库[10]
sonic 是字节跳动开源的一款 Golang JSON 库,基于即时编译(Just-In-Time Compilation)与向量化编程(Single Instruction Multiple Data)技术,大幅提升了 Go 程序的 JSON 编解码性能。同时结合 lazy-load 设计思想,它也为不同业务场景打造了一套全面高效的 API。
Go1.20 正式版本还没有发布,官方计划 2023 年 2 月份发布。不过,Go1.20rc 已经在 12 月 8 号发布了,一起来尝鲜。
1、git-bug[11]
分布式的、离线的、嵌入 Git 中的 bug 追踪器。
2、valgo[12]
类型安全、表现力丰富、可扩展的 Go 验证器包。
3、airplanes[13]
Go 实现的射击游戏。
1、marmot[14]
基于 NATS 构建的分布式 SQLite 复制器。
2、terraform-exec[15]
Go 实现的 Terraform CLI 工具。
3、go-coffeeshop[16]
用 Go 构建的一个实用的事件驱动的微服务演示:使用 Nomad、Consul Connect、Vault和Terraform。
4、Go Time 第 258 期[17]
TDD 还是 not TDD?
这个周刊每周日发布,同步更新在Go语言中文网[18]和微信公众号[19]。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]hertz 0.4.2 发布: https://github.com/cloudwego/hertz
[4]dragonboat 3.3.6 发布: https://github.com/lni/dragonboat
[5]Task 3.19.0 发布: https://github.com/go-task/task/releases/tag/v3.19.0
[6]FerretDB v0.7.0: https://github.com/FerretDB/FerretDB
[7]go-sql-driver/mysql 1.7 发布: https://github.com/go-sql-driver/mysql/releases/tag/v1.7.0
[8]Kubernetes v1.26 发布: https://kubernetes.io/blog/2022/12/09/kubernetes-v1-26-release/
[9]Go streaming 库的性能比较: https://macias.info/entry/202212020000_go_streams.md
[10]sonic :基于 JIT 技术的开源全场景高性能 JSON 库: https://zhuanlan.zhihu.com/p/461772555
[11]git-bug: https://github.com/MichaelMure/git-bug
[12]valgo: https://github.com/cohesivestack/valgo
[13]airplanes: https://github.com/m110/airplanes
[14]marmot: https://github.com/maxpert/marmot
[15]terraform-exec: https://github.com/hashicorp/terraform-exec
[16]go-coffeeshop: https://github.com/thangchung/go-coffeeshop
[17]Go Time 第 258 期: https://changelog.com/gotime/258
[18]Go语言中文网: https://studygolang.com/go/weekly
[19]微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91