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

題圖:來自 @System32Comics
刊首語
2021 年 1 月 12 日,官方正式提出將泛型特性加入 Go 語言,且最新的草案設(shè)計已經(jīng)更新,預(yù)計 Go1.18 加入泛型,官方博文見:https://docs.studygolang.com/blog/generics-proposal。
本期題目:以下代碼輸出什么?
package?main
import?(
?"fmt"
?"time"
)
func?main()?{
?ch1?:=?make(chan?int)
?go?fmt.Println(<-ch1)
?ch1?<-?5
?time.Sleep(1?*?time.Second)
}
資訊
1、gofakeit 6.0.0 發(fā)布[3]
隨機偽數(shù)據(jù)生成器。具有 160 多種功能,可用于生成名稱,電子郵件,位置,顏色,用戶代理等等。
2、Bleve 2.0 發(fā)布[4]
Go 全文搜索和索引。
3、GoLand 計劃保存時執(zhí)行 go fmt[5]
你覺得怎么樣?
4、Resty 2.4 發(fā)布[6]
用于 Go 的簡單 HTTP 和 REST 客戶端庫。
文章
1、2021 年這 8 種編程語言最流行:Go 入榜原來是這個原因
怎樣判斷哪種編程語言最流行?正如要挑選最受歡迎的冰激凌一樣,每個人都有自己的最愛。
下面,我們將會展示一個關(guān)于 for 循環(huán)的代碼,將輸入分成幾個序列添加到 Goroutines 里面!
3、請接收37歲老碼農(nóng)寒冬里給年輕人上的一節(jié) Go 面經(jīng)課
面試的公司是二線及以下。不包括阿里,頭條,快手,美團,拼多多。面試的職位是 Go 后端研發(fā)。
4、第 77 期周刊題解:關(guān)于 goroutine 數(shù)量的,你答對了嗎?
這道題的正確率很低。這篇文章給大家解惑!
5、用 Go 如何實現(xiàn)精準(zhǔn)統(tǒng)計文章字?jǐn)?shù)
今天要聊的內(nèi)容應(yīng)該可以當(dāng)做一道面試題,你可以先想想該怎么實現(xiàn)。
6、驚呆了:我用這個 Go 框架一周實現(xiàn)了一個中臺系統(tǒng)
使用 go-zero。
7、為什么要學(xué)習(xí)更多的編程語言?同時認(rèn)為 Go 是最佳
作者學(xué)了好幾門語言。
這是一篇譯文,原文出處:https://www.sohamkamani.com/golang/type-assertions-vs-type-conversions/。
9、Go內(nèi)置數(shù)據(jù)結(jié)構(gòu)原理[7]
從C++切換到Go語言一年多了,有必要深入了解一下Go語言內(nèi)置數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)原理,本文結(jié)合示例與Go源碼深入到Go語言的底層實現(xiàn)。
平時開發(fā)過程中,時間相關(guān)的操作用的還是很多的。接下來就與大家一起總結(jié)下與時間有關(guān)的操作,主要涉及到 time 包,核心數(shù)據(jù)結(jié)構(gòu)是 time.Time。
實現(xiàn)一個 panic blame 機器人比較簡單,但考慮服務(wù)穩(wěn)定性的話,還是有一些點要注意的。
這篇文章主要是針對 Go channel 的重點分析。
13、聊聊 gorm 的 IsolationLevel[8]
本文主要研究一下 gorm 的 IsolationLevel。
開源項目
1、gocache[9]
完整的 Go 緩存庫,為你帶來多種管理緩存的方式。
2、go-oci8[10]
Oracle 的 Go 驅(qū)動,使用標(biāo)準(zhǔn)庫 database/sql。
3、juicefs[11]
基于 redis 和 S3 構(gòu)建的分布式 POSIX 文件系統(tǒng)。
4、go-jwt-middleware[12]
Go 編程語言中間件,用于檢查 HTTP 請求上的 JWT。
5、gobook[13]
基于 golive 實現(xiàn)的在瀏覽器中運行的交互式解釋器。
6、GistFS[14]
實現(xiàn)了go 1.16的 io/fs 接口,支持從 github gist 讀取文件。
7、colorgrad[15]
Go 色標(biāo)庫,支持自定義顏色漸變、預(yù)設(shè)梯度、硬邊漸變等色彩方案。
8、sorvor[16]
適用于現(xiàn)代 Web 應(yīng)用程序的超快速,零配置服務(wù)器。
9、atoll[17]
密碼安全且高度隨機的秘密生成器。
10、dvid[18]
分布式,版本化,面向圖的數(shù)據(jù)服務(wù)。

11、heart[19]
使用 Go 實現(xiàn)的高性能 lua web 服務(wù)器。
資源&&工具
1、Go Slice Tricks Cheat Sheet[20]
Go Wiki 上共享的“切片技巧[21]”更直觀的表示。
2、act[22]
在本地運行 GitHub Action。
3、re-txt[23]
將文本格式從一種轉(zhuǎn)換為另一種,如果要將 json 文件重新格式化為 yaml,toml 為 yaml,csv 為 yaml 等,這非常有用。
4、jira-cli[24]
jira 命令行交互工具。
5、iron-chart-go[25]
基于 Github 自動部署 Go Web 服務(wù)。
6、5 分鐘內(nèi)學(xué)習(xí) Go[26](英文)
你覺得可能嗎?
7、Go 實現(xiàn)一個簡單的編程語言[27]
它包含了個手寫的遞歸下降解析器和一個簡單的解釋器。
8、mnm[28]
一種電子郵件的替代品。
9、go-git-semver[29]
Go 編寫的 git 的 semver 插件。
10、播客第 162 期[30]
和 “CI/CD with Docker and Kubernetes” 一書作者一起談 CI/CD。
11、nancy[31]
用于查找 Go 依賴包中漏洞的工具。
12、swag[32]
一個規(guī)范且完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。這里有一篇介紹文章:https://studygolang.com/topics/12949。
訂閱
這個周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[33]和微信公眾號[34]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
上期推薦Go語言愛好者周刊:第 77 期 — 這道題目測答對的人不多
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]gofakeit 6.0.0 發(fā)布: https://github.com/brianvoe/gofakeit
[4]Bleve 2.0 發(fā)布: https://blevesearch.com/
[5]GoLand 計劃保存時執(zhí)行 go fmt: https://blog.jetbrains.com/go/2021/01/12/running-go-fmt-on-save/
[6]Resty 2.4 發(fā)布: https://github.com/go-resty/resty
[7]Go內(nèi)置數(shù)據(jù)結(jié)構(gòu)原理: https://zhuanlan.zhihu.com/p/341945051
[8]聊聊 gorm 的 IsolationLevel: https://studygolang.com/articles/32566
[9]gocache: https://github.com/eko/gocache
[10]go-oci8: https://github.com/mattn/go-oci8
[11]juicefs: https://github.com/juicedata/juicefs
[12]go-jwt-middleware: https://github.com/auth0/go-jwt-middleware
[13]gobook: https://github.com/brendonmatos/gobook
[14]GistFS: https://github.com/jhchabran/gistfs
[15]colorgrad: https://github.com/mazznoer/colorgrad
[16]sorvor: https://github.com/osdevisnot/sorvor
[17]atoll: https://github.com/GGP1/atoll
[18]dvid: https://github.com/janelia-flyem/dvid
[19]heart: https://github.com/Hyperspace-Logistics/heart
[20]Go Slice Tricks Cheat Sheet: https://ueokande.github.io/go-slice-tricks/
[21]切片技巧: https://github.com/golang/go/wiki/SliceTricks
[22]act: https://github.com/nektos/act
[23]re-txt: https://github.com/alash3al/re-txt
[24]jira-cli: https://github.com/ankitpokhrel/jira-cli/
[25]iron-chart-go: https://github.com/ironpeakservices/iron-chart-go
[26]5 分鐘內(nèi)學(xué)習(xí) Go: https://gist.github.com/prologic/5f6afe9c1b98016ca278f4d507e65510
[27]Go 實現(xiàn)一個簡單的編程語言: https://github.com/karminski/pineapple/blob/main/README-zh-CN.md
[28]mnm: https://github.com/networkimprov/mnm
[29]go-git-semver: https://github.com/chrisDeFouRire/go-git-semver
[30]播客第 162 期: https://changelog.com/gotime/162
[31]nancy: https://github.com/sonatype-nexus-community/nancy
[32]swag: https://github.com/zc2638/swag
[33]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[34]微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
