Go语言爱好者周刊:第 121 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Go 实现的模拟器。
刊首语
上期是一道关于不定参数的题目:
package main
import (
"fmt"
)
func f(a ...int) {
fmt.Printf("%#v\n", a)
}
func main() {
f()
}
A:[]int{};B:[]int(nil);C:panic;D:编译错误
正确答案是 B,但却有 58% 的用户选的 A。首先,a 的类型是 []int,调用 f 时,没有传递任何参数,因此相当于值是 nil,即 a 的类型是 []int
,值是 nil。而 fmt.Printf 的动词 %#v
会同时打印类型和值。所以结果是 B。
资讯
一个 Go 语言写的图片代理网关,可以代理远程图片,并且提供格式转换和大小缩放功能。
Mongo 官方出品的驱动。
全面使用 go.dev。
使用 WireGuard 和 2FA 最简单、最安全的方法。
文章
通过学习 slices 包,掌握 Go 泛型的使用方法。
了解 recover 或者终止的过程,可以更好地理解一个会发生 panic 的程序的后果。
本文面总结了可用的工具,并帮助 Go 用户针对他们的特定问题选择正确的工具。
具有监控存活的 goroutine 数量功能的 APM (Application Performance Monitoring) 应用程序性能监控可以轻松查出 goroutine 泄漏。
Go 中的错误处理一直是争议最多的。Rust 是通过引入 Result 类型来解决此问题。
用图解的方式介绍了 string 的底层原理以及 rune 类型,同时介绍了 string 在使用中常见的错误。
开源项目
1、tally
Uber 开源的高性能、支持缓存的分层的统计信息收集接口。
2、porto
自动为包添加 vanity import path。
3、ramsql
用于测试的内存 SQL 引擎。
4、i18n
包 i18n 为你的 Go 应用程序提供国际化和本地化。
5、goconvey
在浏览器中进行测试。与 “go test” 集成,在 Go 中编写行为测试。
6、goi
QOI 是一种无损图像格式,它提供了加速压缩和解压缩以及简单的实现。
7、r2
Go 极简的 HTTP 请求路由辅助器。
资源&&工具
1、sniffer
一个现代化的基于 BPF 的跨平台进程流量分析工具。
2、nes
NES 模拟器。
3、new
用于在 Go 1.18+ 中创建指向新对象指针的辅助函数。
Go 微服务示例。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。