Go語言愛好者周刊:第 109 期 — Go1.17 相關(guān)特性
這里記錄每周值得分享的 Go 語言相關(guān)內(nèi)容,周日發(fā)布。
本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟件/資源等,請提交 issue[2] 。
鑒于一些人可能沒法堅持把英文文章看完,因此,周刊中會盡可能推薦優(yōu)質(zhì)的中文文章。優(yōu)秀的英文文章,我們的 GCTT 組織會進行翻譯。

題圖:Go1.17 發(fā)布
刊首語
上期的題目是關(guān)于 sync.WaitGroup 的。以下代碼是否能正確運行?
package main
import (
"fmt"
"sync"
)
func main() {
wg := sync.WaitGroup{}
wg.Add(1)
go hello(wg)
wg.Wait()
}
func hello(wg sync.WaitGroup) {
fmt.Println("hello")
wg.Done()
}
A:否,會 panic;B:是,能正確運行;C:不清楚,看投票結(jié)果
答案是 A,因為 hello 的參數(shù)是 sync.WaitGroup,這會導致 main 中 wg 被復制一份,起不到該有的作用,應該改為 *sync.WaitGroup。答對的人 56%。
本期歇歇,不出題目了。
資訊
1、為了支持 Go1.18 泛型,sync 包計劃增加一些函數(shù)[3]
比如 PoolOf, MapOf, ValueOf 等。不少標準庫都會對泛型做出改進、調(diào)整,對泛型更友好。
2、glog 包發(fā)布 1.0.0[4]
這是類似谷歌 C++ 的 glog 包,支持 level 的純 Go 實現(xiàn)。
3、GoLand 2021.2.1 發(fā)布[5]
除了修復 bug,還有一些新特性。
4、Delve v1.7.1 發(fā)布[6]
首次內(nèi)置 eBPF 跟蹤后端。
幫官方反饋建議。
誰在招 Gopher
整理近期的 Go 職位。有招聘需求可以到「Go招聘」發(fā)布!
文章
1、Go1.17 重磅發(fā)布了!泛型版 Go1.18 重新開放開發(fā)
20201-08-16 日如期發(fā)布。
2、Go Modules 教程第 2 部分:項目、依賴和 gopls
2019 年的文章,雖然有些舊,但值得一讀。這是第三篇:《Go Module 教程第 3 部分:最小版本選擇》。
什么是微服務(wù)呢?我們?yōu)槭裁匆褂盟??為什么要?Golang 中使用微服務(wù)架構(gòu)?它有哪些優(yōu)點?
自從 Go1.11 增加 Go Module 以來,每個版本都在不斷改進 Module。Go1.17 也不例外,看看有哪些變化?
5、Go 1.17 新特性詳解:使用基于寄存器的調(diào)用慣例[7]
看看編譯器與運行時中那些值得關(guān)注的變化。
開源項目
1、unixtransport[8]
在 Go HTTP 客戶端中支持 Unix 域套接字。
2、testcase[9]
Go 行為驅(qū)動的測試庫。
3、IceFireDB[10]
基于 Raft 和 Redis 協(xié)議的分布式磁盤存儲系統(tǒng)。
4、viddy[11]
使用純 Go 實現(xiàn)的現(xiàn)代 watch 命令。
5、pqssh[12]
通過 SSH 的 PostgreSQL 的 Go 驅(qū)動。
6、base64[13]
更快的 Base64 編碼。
7、ZITADEL[14]
云時代的"云原生身份和訪問管理"解決方案。
資源&&工具
1、golang-samples[15]
Google 云 Go 應用實例。
2、gokart[16]
Go 代碼的靜態(tài)安全分析工具。

3、croc[17]
Go 開發(fā)的文件傳輸工具。
4、DorkScout[18]
可自動對整個互聯(lián)網(wǎng)或特定目標進行 google dork 掃描的 Go 工具。
5、go-generics-example[19]
Go 1.17 可運行的 Go 泛型示例。需要加上 -gcflags=-G=3。
6、油管視頻[20]
Go Workspaces 提案的原型實現(xiàn)演示。
7、播客第 193 期[21]
與 Caddy 作者 Matt Holt 聊 Caddy V2。
8、regexp2go[22]
將 Go 正則表達式編譯為 Go 代碼。
訂閱
這個周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[23]和微信公眾號[24]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
往期推薦
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]為了支持 Go1.18 泛型,sync 包計劃增加一些函數(shù): https://github.com/golang/go/issues/47657
[4]glog 包發(fā)布 1.0.0: https://github.com/golang/glog
[5]GoLand 2021.2.1 發(fā)布: https://blog.jetbrains.com/go/2021/08/20/goland-2021-2-1-is-out/
[6]Delve v1.7.1 發(fā)布: https://github.com/go-delve/delve/blob/master/CHANGELOG.md#171-2021-08-18
[7]Go 1.17 新特性詳解:使用基于寄存器的調(diào)用慣例: https://tonybai.com/2021/08/20/using-register-based-calling-convention-in-go-1-17
[8]unixtransport: https://github.com/peterbourgon/unixtransport
[9]testcase: https://github.com/adamluzsi/testcase
[10]IceFireDB: https://github.com/gitsrc/IceFireDB
[11]viddy: https://github.com/sachaos/viddy
[12]pqssh: https://github.com/mattn/pqssh
[13]base64: https://github.com/cristalhq/base64
[14]ZITADEL: https://github.com/caos/zitadel
[15]golang-samples: https://github.com/GoogleCloudPlatform/golang-samples
[16]gokart: https://github.com/praetorian-inc/gokart
[17]croc: https://github.com/schollz/croc
[18]DorkScout: https://github.com/R4yGM/dorkscout
[19]go-generics-example: https://github.com/mattn/go-generics-example
[20]油管視頻: https://www.youtube.com/watch?v=wQglU5aB5NQ
[21]播客第 193 期: https://changelog.com/gotime/193
[22]regexp2go: https://github.com/CAFxX/regexp2go
[23]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[24]微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
