Go語言愛好者周刊:第 99 期 — 端午節(jié)快樂
這里記錄每周值得分享的 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)不支持外鏈,文中大量鏈接可通過文末「閱讀原文」查看。
題圖:端午節(jié)快樂
刊首語
上次的題目忘記做成投票形式了,不知道大家答題情況如何!題目比較簡(jiǎn)單:
package main
import (
"fmt"
)
func main() {
a := make([]int, 20)
a = []int{7, 8, 9, 10}
b := a[15:16]
fmt.Println(b)
}
A:[0];B:panic;C:7;D:不清楚
正確答案是 B。a 被重新賦值為 []int{7, 8, 9, 10},之前 make 創(chuàng)建的 slice 跟 a 沒有任何關(guān)系了。因此 a[15:16] 肯定會(huì)越界,所以 panic。
看看今天的題目,以下代碼輸出什么?
package main
import "fmt"
func named() (n, _ int) {
return 1, 2
}
func main() {
fmt.Print(named())
}
資訊
看看有哪些新變化。
2、gopls 0.7 發(fā)布[3]
增加了 Postfix 完成,降低了內(nèi)存使用。
3、CodePerfect 95[4]
專為 Go 開發(fā)者打造的新 IDE。
4、rqlite 6.0 發(fā)布[5]
分布式數(shù)據(jù)庫(kù)設(shè)計(jì)的演變。
5、vagrant 3.0 將使用 Go 重寫[6]
官方提到,為了支持其日益增長(zhǎng)的生態(tài)系統(tǒng)和社區(qū),計(jì)劃開發(fā) 3.0 版本。
誰在招 Gopher
整理近期的 Go 職位。有招聘需求可以到「Go招聘」發(fā)布!
2、運(yùn)維開發(fā)有點(diǎn)香哦,廣州Gopher這下又有福了
文章
1、Go 調(diào)度器的任務(wù)竊取(Work-Stealing)
在 Go 中創(chuàng)建 Goroutine 既方便又快捷,然而 Go 在同一時(shí)間內(nèi)最多在一個(gè)核上運(yùn)行一個(gè) Goroutine,因此需要一種方法來存放其他的 Goroutine,從而確保處理器(processor)負(fù)載均衡。
2、字節(jié)跳動(dòng)打造的輪子:Go 表單驗(yàn)證器
字節(jié)跳動(dòng)開源的一個(gè)庫(kù):go-tagexpr。
這是 Go 的一大應(yīng)用場(chǎng)景。
清理內(nèi)存是一個(gè)過程,它能夠讓 Go 知道哪些內(nèi)存段最近可用于分配。但是,它并不會(huì)使用將位置 0 的方式來清理內(nèi)存。
go test 命令提供了許多出色的功能,比如代碼覆蓋率,CPU 和 內(nèi)存分析。要提供這些統(tǒng)計(jì)信息,Go 就需要一種方式來跟蹤 CPU 使用率,或在代碼覆蓋中跟蹤一個(gè)函數(shù)何時(shí)被用到。
本篇文章剖析下 Go 定時(shí)器的相關(guān)內(nèi)容。定時(shí)器不管是業(yè)務(wù)開發(fā),還是基礎(chǔ)架構(gòu)開發(fā),都是繞不過去的存在,由此可見定時(shí)器的重要程度。
開源項(xiàng)目
1、lorca[7]
使用 Go + HTML5 建立跨平臺(tái)現(xiàn)代桌面應(yīng)用程序。

2、connpool[8]
net.Conn 的連接池。
3、geziyor[9]
快速的網(wǎng)絡(luò)爬蟲框架。支持 JS 渲染。
4、go-hashlru[10]
簡(jiǎn)單的、線程安全的 LRU 實(shí)現(xiàn)。
5、sso[11]
內(nèi)部服務(wù)的 Go 單點(diǎn)登錄方案。
6、log[12]
Go 中簡(jiǎn)單、可定制、分級(jí)且高效的日志記錄。
7、godis[13]
純 Go 實(shí)現(xiàn)的 redis server。
8、bramble[14]
生產(chǎn)可用的 GraphQL 網(wǎng)關(guān)。
資源&&工具
1、Worldwide[15]
Go 編寫的 Gameboy 顏色模擬器。
2、dbmate[16]
輕量級(jí)數(shù)據(jù)庫(kù)遷移框架。用 Go 實(shí)現(xiàn)的,但可以與任何語言編寫的應(yīng)用程序一起使用。支持 MySQL,Postgres,SQLite 和 Clickhouse。
3、reqstress[17]
Go 實(shí)現(xiàn)的發(fā)送原始 HTTP 請(qǐng)求的基準(zhǔn)測(cè)試和壓力測(cè)試工具。
這是一本免費(fèi)的 Go 語言在線圖書:https://www.practical-go-lessons.com/。
5、kuma[18]
Go 實(shí)現(xiàn)的通用服務(wù)網(wǎng)格, CNCF sandbox 項(xiàng)目。
6、libvault[19]
vault 的輕量級(jí) Go 客戶端。
7、播客第 183 期[20]
以不尋常的方式使用 Go。
8、GopherCon2021IsraelStaticAnalysisWorkshop[21]
Go 代碼靜態(tài)分析實(shí)戰(zhàn)指南。
訂閱
這個(gè)周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[22]和微信公眾號(hào)[23]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
往期推薦
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]gopls 0.7 發(fā)布: https://github.com/golang/tools/releases/tag/gopls/v0.7.0
[4]CodePerfect 95: https://codeperfect95.com/
[5]rqlite 6.0 發(fā)布: https://www.philipotoole.com/rqlite-6-0-0-building-for-the-future/
[6]vagrant 3.0 將使用 Go 重寫: https://www.hashicorp.com/blog/toward-vagrant-3-0
[7]lorca: https://github.com/zserge/lorca
[8]connpool: https://github.com/buraksezer/connpool
[9]geziyor: https://github.com/geziyor/geziyor
[10]go-hashlru: https://github.com/saurabh0719/go-hashlru
[11]sso: https://github.com/buzzfeed/sso
[12]log: https://github.com/ermanimer/log
[13]godis: https://github.com/HDT3213/godis
[14]bramble: https://github.com/movio/bramble
[15]Worldwide: https://github.com/pokemium/Worldwide
[16]dbmate: https://github.com/amacneil/dbmate
[17]reqstress: https://github.com/utkusen/reqstress
[18]kuma: https://github.com/kumahq/kuma
[19]libvault: https://github.com/canidam/libvault
[20]播客第 183 期: https://changelog.com/gotime/183
[21]GopherCon2021IsraelStaticAnalysisWorkshop: https://github.com/amit-davidson/GopherCon2021IsraelStaticAnalysisWorkshop
[22]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[23]微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
