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

題圖:excelize 2.3.2 發(fā)布
刊首語
以下代碼輸出結(jié)果中, goroutine 的數(shù)量是幾個(gè)?(Go 1.15.x)
package?main
import?(
?"fmt"
?"io/ioutil"
?"net/http"
?"runtime"
)
func?main()?{
?num?:=?6
?for?index?:=?0;?index???resp,?_?:=?http.Get("https://www.baidu.com")
??_,?_?=?ioutil.ReadAll(resp.Body)
?}
?fmt.Printf("此時(shí)goroutine個(gè)數(shù)=?%d\n",?runtime.NumGoroutine())
}
資訊
1、Excelize 2.3.2 發(fā)布[3]
用于讀取和寫入 Excel 文件的庫。讀取和寫入 XLSX 文件,設(shè)置和讀取單元格值,添加圖表。最新版本改進(jìn)了對(duì)數(shù)據(jù)透視表的支持,并添加了各種新的公式函數(shù)。
2021年1月4日,社區(qū)正式發(fā)布了 2.3.2 版本,該版本包含了多項(xiàng)新增功能、錯(cuò)誤修復(fù)和兼容性提升優(yōu)化:https://xuri.me/excelize/zh-hans/releases/v2.3.2.html。
2、Go 1.16 中原本欲支持的結(jié)構(gòu)體字段標(biāo)簽合并寫法特性被取消了[4]
大概原因是這個(gè)特性需要 Go 官方工具鏈和很多第三方工具都需要適當(dāng)修改以應(yīng)對(duì)這個(gè)變化,而完成這些修改的代價(jià)相對(duì)此特性帶來的好處來說太大。
3、ethr 1.0 發(fā)布,微軟出品[5]
全面的網(wǎng)絡(luò)測(cè)量和分析工具。
4、go-redis 8.4.6 發(fā)布[6]
類型安全的 Redis Go 客戶端。
文章
1、淺談配置文件
這幾乎是項(xiàng)目不可避免的。
來自知乎的一個(gè)問題和一些答案的整理。
無論什么語言,類型都涉及到了編程語法的方方面面。加強(qiáng)對(duì)于類型和指針的理解,對(duì)于提高編程水平十分關(guān)鍵。
4、知乎問答:為什么 Go 的 Web 框架速度還不如 Java?
提問者由此問題的根據(jù)來自:https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=json,不過提問時(shí)說:Go 不是編譯型語言嗎,速度怎么還不如 Java?顯然這個(gè)說法有問題。
本文重點(diǎn)討論內(nèi)聯(lián)優(yōu)化相關(guān)內(nèi)容。
6、全面的整理:golang 調(diào)試分析的高階技巧
本文專注 golang debug 的一些技巧應(yīng)用,以及相關(guān)工具的實(shí)用用法,再也不用怕 golang 怎么調(diào)試。
多線程程序在多核 CPU 機(jī)器上訪問共享資源時(shí),難免會(huì)遇到問題。
8、探索 Golang 協(xié)程實(shí)現(xiàn)——從 v1.0 開始
提起協(xié)程,你可能會(huì)說,不就 go func 嗎,我分分鐘就能創(chuàng)建上萬個(gè)協(xié)程??墒菂f(xié)程到底是什么呢?都說協(xié)程是用戶態(tài)線程,這里的用戶態(tài)是什么意思?都說協(xié)程比線程更輕量,協(xié)程輕量在哪里呢?
通過命令行輸入城市名或者城市碼獲取當(dāng)前城市的溫度情況。
10、Go 語言同步原語的基石
Go 是一門以并發(fā)編程見長的語言,它提供了一系列的同步原語方便開發(fā)者使用。
11、Golang 中線性表的實(shí)現(xiàn)[7]
最常見的數(shù)據(jù)結(jié)構(gòu)之一。
12、go os/exec 簡明教程[8]
該標(biāo)準(zhǔn)庫的詳解。
先從一個(gè)老生常談的問題開始談起:我們的程序是如何運(yùn)行起來的?
開源項(xiàng)目
1、Ebiten UI[9]
UI 引擎和 Ebiten[10] 的小部件庫。
2、oto[11]
低級(jí)別的庫,可在多個(gè)平臺(tái)上播放聲音。Windows, macOS, Android, iOS, 甚至瀏覽器 (via GopherJS)。
3、tpack[12]
將 Go 工作流或函數(shù)打包成 Unix 風(fēng)格的管道命令。
4、go-in-go[13]
將 Go 用作動(dòng)態(tài)插件語言。
5、ember[14]
在運(yùn)行時(shí)將任意文件嵌入到二進(jìn)制文件中。
6、minikeyvalue[15]
自動(dòng)駕駛技術(shù)公司 comma.ai 在生產(chǎn)環(huán)境中使用的分布式 key-value 數(shù)據(jù)庫,僅不到 1k 行 Go 代碼。
7、trandoshan[16]
快速且高度可配置的云原生網(wǎng)絡(luò)爬蟲。
8、minict[17]
用 Go 語言編寫的最小的容器運(yùn)行時(shí),主要用于學(xué)習(xí)目的,并且旨在盡可能地簡化。
資源&&工具
1、go2cs[18]
Go 到 C# 的轉(zhuǎn)換器。
2、gomerge[19]
gomerge 是一種工具,可以快速合并來自終端的多個(gè)拉取請(qǐng)求。
3、clair[20]
容器的漏洞靜態(tài)分析。
4、dockerstats[21]
查看所有公共 Docker 映像的歷史 pull 圖。

5、template[22]
應(yīng)用 clean architecture 的 Go 工程模板。
6、油管視頻[23]
都 2021 年了,你不應(yīng)該手動(dòng)更新 Go 測(cè)試了。
7、awesome-go-with-stars[24]
帶有 star 數(shù)量的 awesome-go 列表。
8、播客第 161 期[25]
Go panic。
9、grasp[26]
使用易于記憶的單詞創(chuàng)建強(qiáng)密碼。
[email protected]?Vercingetorige!?
Xj>_Cl.K3nRa
訂閱
這個(gè)周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[27]和微信公眾號(hào)[28]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]Excelize 2.3.2 發(fā)布: https://github.com/360EntSecGroup-Skylar/excelize
[4]Go 1.16 中原本欲支持的結(jié)構(gòu)體字段標(biāo)簽合并寫法特性被取消了: https://github.com/golang/go/issues/40281
[5]ethr 1.0 發(fā)布,微軟出品: https://logicpundit.com/blog/ethr-v1/
[6]go-redis 8.4.6 發(fā)布: https://github.com/go-redis/redis
[7]Golang 中線性表的實(shí)現(xiàn): https://segmentfault.com/a/1190000038836868
[8]go os/exec 簡明教程: https://colobu.com/2020/12/27/go-with-os-exec/
[9]Ebiten UI: https://github.com/blizzy78/ebitenui
[10]Ebiten: https://ebiten.org/
[11]oto: https://github.com/hajimehoshi/oto
[12]tpack: https://github.com/reugn/tpack
[13]go-in-go: https://skuz.xyz/go-in-go.html
[14]ember: https://github.com/maja42/ember
[15]minikeyvalue: https://github.com/geohot/minikeyvalue
[16]trandoshan: https://github.com/creekorful/trandoshan
[17]minict: https://github.com/Ripolak/minict
[18]go2cs: https://go2cs.net/
[19]gomerge: https://github.com/Cian911/gomerge
[20]clair: https://github.com/quay/clair
[21]dockerstats: https://github.com/aeneasr/dockerstats
[22]template: https://github.com/golang-common-packages/template
[23]油管視頻: https://www.youtube.com/watch?v=mvkIruEGRr4
[24]awesome-go-with-stars: https://github.com/amanbolat/awesome-go-with-stars
[25]播客第 161 期: https://changelog.com/gotime/161
[26]grasp: https://github.com/lucasepe/grasp
[27]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[28]微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
