Go語(yǔ)言愛(ài)好者周刊:第 121 期
這里記錄每周值得分享的 Go 語(yǔ)言相關(guān)內(nèi)容,周日發(fā)布。
本周刊開(kāi)源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟件/資源等,請(qǐng)提交 issue[2] 。
鑒于一些人可能沒(méi)法堅(jiān)持把英文文章看完,因此,周刊中會(huì)盡可能推薦優(yōu)質(zhì)的中文文章。優(yōu)秀的英文文章,我們的 GCTT 組織會(huì)進(jìn)行翻譯。
由于微信公眾號(hào)不支持外鏈,文中大量鏈接可通過(guò)文末「閱讀原文」查看。

題圖:Go 實(shí)現(xiàn)的模擬器。
刊首語(yǔ)
上期是一道關(guān)于不定參數(shù)的題目:
package?main
import?(
?"fmt"
)
func?f(a?...int)?{
?fmt.Printf("%#v\n",?a)
}
func?main()?{
?f()
}
A:[]int{};B:[]int{nil};C:panic;D:編譯錯(cuò)誤
正確答案是 B,但卻有 58% 的用戶(hù)選的 A。首先,a 的類(lèi)型是 []int,調(diào)用 f 時(shí),沒(méi)有傳遞任何參數(shù),因此相當(dāng)于值是 nil,即 a 的類(lèi)型是 []int,值是 nil。而 fmt.Printf 的動(dòng)詞 %#v 會(huì)同時(shí)打印類(lèi)型和值。所以結(jié)果是 B。
資訊
1、imgproxy 3.0 發(fā)布[3]
一個(gè) Go 語(yǔ)言寫(xiě)的圖片代理網(wǎng)關(guān),可以代理遠(yuǎn)程圖片,并且提供格式轉(zhuǎn)換和大小縮放功能。
2、mongo-go-driver 1.8.0 發(fā)布[4]
Mongo 官方出品的驅(qū)動(dòng)。
3、終于,golang.org 官網(wǎng)被徹底拋棄了
全面使用 go.dev。
4、tailscale v1.8.1 發(fā)布[5]
使用 WireGuard 和 2FA 最簡(jiǎn)單、最安全的方法。
文章
通過(guò)學(xué)習(xí) slices 包,掌握 Go 泛型的使用方法。
了解 recover 或者終止的過(guò)程,可以更好地理解一個(gè)會(huì)發(fā)生 panic 的程序的后果。
本文面總結(jié)了可用的工具,并幫助 Go 用戶(hù)針對(duì)他們的特定問(wèn)題選擇正確的工具。
具有監(jiān)控存活的 goroutine 數(shù)量功能的 APM (Application Performance Monitoring) 應(yīng)用程序性能監(jiān)控可以輕松查出 goroutine 泄漏。
5、在 Go1.18 中實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 Result 類(lèi)型
Go 中的錯(cuò)誤處理一直是爭(zhēng)議最多的。Rust 是通過(guò)引入 Result 類(lèi)型來(lái)解決此問(wèn)題。
6、Go錯(cuò)誤集錦 | 字符串底層原理及常見(jiàn)錯(cuò)誤
用圖解的方式介紹了 string 的底層原理以及 rune 類(lèi)型,同時(shí)介紹了 string 在使用中常見(jiàn)的錯(cuò)誤。
開(kāi)源項(xiàng)目
1、tally[6]
Uber 開(kāi)源的高性能、支持緩存的分層的統(tǒng)計(jì)信息收集接口。
2、porto[7]
自動(dòng)為包添加 vanity import path。
3、ramsql[8]
用于測(cè)試的內(nèi)存 SQL 引擎。
4、i18n[9]
包 i18n 為你的 Go 應(yīng)用程序提供國(guó)際化和本地化。
5、goconvey[10]
在瀏覽器中進(jìn)行測(cè)試。與 “go test” 集成,在 Go 中編寫(xiě)行為測(cè)試。
6、goi[11]
QOI 是一種無(wú)損圖像格式,它提供了加速壓縮和解壓縮以及簡(jiǎn)單的實(shí)現(xiàn)。
7、r2[12]
Go 極簡(jiǎn)的 HTTP 請(qǐng)求路由輔助器。
資源&&工具
1、sniffer[13]
一個(gè)現(xiàn)代化的基于 BPF 的跨平臺(tái)進(jìn)程流量分析工具。
2、nes[14]
NES 模擬器。
3、new[15]
用于在 Go 1.18+ 中創(chuàng)建指向新對(duì)象指針的輔助函數(shù)。
4、microservices[16]
Go 微服務(wù)示例。
訂閱
這個(gè)周刊每周日發(fā)布,同步更新在Go語(yǔ)言中文網(wǎng)[17]和微信公眾號(hào)[18]。
微信搜索"Go語(yǔ)言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]imgproxy 3.0 發(fā)布: https://github.com/imgproxy/imgproxy
[4]mongo-go-driver 1.8.0 發(fā)布: https://github.com/mongodb/mongo-go-driver
[5]tailscale v1.8.1 發(fā)布: https://github.com/tailscale/tailscale
[6]tally: https://github.com/uber-go/tally
[7]porto: https://github.com/jcchavezs/porto
[8]ramsql: https://github.com/proullon/ramsql
[9]i18n: https://github.com/go-i18n/i18n
[10]goconvey: https://github.com/smartystreets/goconvey
[11]goi: https://github.com/neguse/goi
[12]r2: https://github.com/aofei/r2
[13]sniffer: https://github.com/chenjiandongx/sniffer
[14]nes: https://github.com/fogleman/nes
[15]new: https://github.com/carlmjohnson/new
[16]microservices: https://github.com/ebosas/microservices
[17]Go語(yǔ)言中文網(wǎng): https://studygolang.com/go/weekly
[18]微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
