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

題圖:Go With The Domain
刊首語
網(wǎng)友貢獻的一道題:
package main
import "fmt"
type T1 struct {
String func() string
}
func (T1) Error() string {
return "T1.Error"
}
type T2 struct {
Error func() string
}
func (T2) String() string {
return "T2.String"
}
var t1 = T1{String: func() string { return "T1.String" }}
var t2 = T2{Error: func() string { return "T2.Error" }}
func main() {
fmt.Println(t1.Error())
fmt.Println(t1.String())
fmt.Println(t2.Error())
fmt.Println(t2.String())
fmt.Println(t1)
fmt.Println(t2)
}
以上代碼輸出什么?
誰在招 Gopher
整理近期的 Go 職位。有招聘需求可以到「Go招聘」發(fā)布!
2、沒錯,可以全職參與開源語言開發(fā):國人開發(fā)的語言 Go+ 團隊招人
資訊
1、ION 1.9 發(fā)布[3]
分布式實時通信(RTC)系統(tǒng),基于 Go 和 Flutter。
2、Gitea 1.14.0 發(fā)布[4]
Go 開發(fā)的 Git 自助服務(wù)。
3、基于寄存器 ABI 改造完成[5]
Go 基于寄存器的ABI規(guī)范的改造基本完工,平均性能提升 6%。
文章
1、一道 Go 閉包題,面試官說原來自己答錯了:面別人也漲知識
本文從一道題引出 Go 中的閉包。這是 Go 語言愛好者周刊第 90 期的一道題目。
在 Go 中,協(xié)程就是一個包含程序運行時的信息的結(jié)構(gòu)體,如棧,程序計數(shù)器,或者它當前的 OS 線程。調(diào)度器還必須注意 Goroutine 的開始和退出,這兩個階段需要謹慎管理。
4、注釋竟然還有特殊用途?一文解惑 //go:linkname 指令
別告訴我你還不會。
雖然目前 Go 還未準備好作為腳本語言 “開箱即用” 的特性,用來替代 Python 和 Bash ,但是我們只需要一點點準備工作就可以達到想要的目標。
go-zero 生態(tài)的一個組件 go-stash。
7、用 Golang 實現(xiàn) RSA 加密和簽名(有示例)
本文介紹 RSA 干了什么,以及我們怎樣用 Go 實現(xiàn)它。
8、大佬的思路很清晰:Go+的設(shè)計原來是怎么思考的
七牛云 CEO、ECUG 發(fā)起人許式偉以「Go+ 與數(shù)據(jù)科學」 為主題進行了分享,講述了對數(shù)據(jù)科學變遷的理解,對新語言 Go+ 的設(shè)想和規(guī)劃,并大膽指出數(shù)據(jù)科學正迎來爆發(fā)期,像字節(jié)跳動一樣的新型公司只會越來越多。
9、深入 Go 并發(fā)原語 — Channel 底層實現(xiàn)
作為 Go 并發(fā)原語的第一篇文章,一定繞不開 Go 的并發(fā)哲學。從 Tony Hoare 寫的 Communicating Sequential Processes 這篇文章說起,這篇經(jīng)典論文算是 Go 語言并發(fā)原語的根基。
10、詳解 Go 程序的啟動流程,你知道 g0,m0 是什么嗎?
Go 程序啟動過程解析。
開源項目
1、encore[6]
一個框架,可以快速創(chuàng)建 API 和分布式系統(tǒng)。
2、go-snowflake[7]
基于 Twitter 雪花算法的無鎖 ID 生成器。

3、reproxy[8]
Go 實現(xiàn)的極簡反向代理。
4、dasel[9]
使用選擇符(.)查詢和修改數(shù)據(jù)結(jié)構(gòu)中的字段,支持 JSON, TOML, YAML, XML 和 CSV 等。
5、weaviate[10]
云原生、模塊化、實時矢量搜索引擎。
6、inspr[11]
用于簡單、快速和安全地開發(fā)分布式應(yīng)用程序的應(yīng)用網(wǎng)格(app mesh)。
7、gotuna[12]
漸進式 Web 開發(fā)框架。
8、fonts[13]
Go 系統(tǒng)字體操作包。
資源&&工具
1、gops[14]
查看正在運行 Go 進程的列表和診斷工具。作者歡迎大家提需求。

2、gitleaks[15]
檢測 Git 代碼倉庫中有沒有存入敏感信息,比如密碼。
3、pingme[16]
可向多個消息平臺和電子郵件發(fā)送消息或警報的 cli 工具。
4、播客第 175 期[17]
GopherCon 提案的終極指南。
5、播客第 173 期[18]
聊 Go 應(yīng)用的發(fā)布。
6、scilla[19]
網(wǎng)絡(luò)信息收集工具。
7、gidevice[20]
Golang 實現(xiàn)的 iOS 設(shè)備通信工具。
8、httpit[21](kiyonlin[22] 投稿)
一款基于 fasthttp的 http(s) benchmark 工具,實時統(tǒng)計顯示測試結(jié)果。
訂閱
這個周刊每周日發(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]ION 1.9 發(fā)布: https://github.com/pion/ion
[4]Gitea 1.14.0 發(fā)布: https://blog.gitea.io/2021/04/gitea-1.14.0-is-released/
[5]基于寄存器 ABI 改造完成: https://github.com/golang/go/issues/40724#issuecomment-821758073
[6]encore: https://github.com/encoredev/encore
[7]go-snowflake: https://github.com/godruoyi/go-snowflake
[8]reproxy: https://github.com/umputun/reproxy
[9]dasel: https://github.com/TomWright/dasel
[10]weaviate: https://github.com/semi-technologies/weaviate
[11]inspr: https://github.com/inspr/inspr
[12]gotuna: https://github.com/gotuna/gotuna
[13]fonts: https://github.com/go-swiss/fonts
[14]gops: https://github.com/google/gops
[15]gitleaks: https://github.com/zricethezav/gitleaks
[16]pingme: https://github.com/kha7iq/pingme
[17]播客第 175 期: https://changelog.com/gotime/175
[18]播客第 173 期: https://changelog.com/gotime/173
[19]scilla: https://github.com/edoardottt/scilla
[20]gidevice: https://github.com/electricbubble/gidevice
[21]httpit: https://github.com/gonetx/httpit
[22]kiyonlin: https://github.com/kiyonlin
[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
推薦閱讀
