這里記錄每周值得分享的 Go 語言相關(guān)內(nèi)容,周日發(fā)布。 本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟件/資源等,請提交 issue[2] 。 鑒于大部分人可能沒法堅(jiān)持把英文文章看完,因此,周刊中會(huì)盡可能推薦優(yōu)質(zhì)的中文文章。優(yōu)秀的英文文章,我們的 GCTT 組織會(huì)進(jìn)行翻譯。 題圖:TamaGo,一個(gè) TinyGo ARM 替代品 刊首語Go101 作者發(fā)布了一道有意思的題目,這道題主要考察細(xì)節(jié)點(diǎn),Go101 這本書也是以摳細(xì)節(jié)著稱。看看這道題,以下程序輸出什么?(單選)
這里涉及到兩個(gè)知識(shí)點(diǎn),在 Go 語言規(guī)范中都有明確的說明,但確實(shí)很細(xì)節(jié)。你答對(duì)了嗎?原因知曉嗎? 資訊1、Go 對(duì)靜態(tài)資源的內(nèi)嵌支持的提案被接受,在 Go1.16 實(shí)現(xiàn)[3] 提案在這里:https://github.com/golang/proposal/blob/master/design/draft-embed.md。 2、pkg.go.dev 計(jì)劃重新設(shè)計(jì)[4] 之前寫文章分析過,現(xiàn)有的設(shè)計(jì)確實(shí)。。。期待重新設(shè)計(jì)能夠更好。 3、TinyGo 對(duì) ESP32 和 ESP8266 的初始支持[5] 你可能已經(jīng)聽說過,上周我們在 0.15 版本的 TinyGo 中添加了 ESP32 和 ESP8266 支持。如果你熟悉微控制器,這將是令人振奮的消息,因?yàn)檫@些 ESP 設(shè)備既便宜又受歡迎。但是,這只是一個(gè)初始端口,在你可以利用 WiFi 和藍(lán)牙等所有功能之前,還有很多工作要做。 4、Caddy 2.2.0 發(fā)布[6] 支持 ZeroSSL[7] 和 HTTP/2 server push。 5、twirp 7.1 發(fā)布[8] 具有 Protobuf 服務(wù)定義的簡單 RPC 框架。 6、Go 1.16 go module 機(jī)制默認(rèn)開啟[9] 官方還是很謹(jǐn)慎。沒有使用 module 真的說不過去了。 7、k6 v0.28.0 發(fā)布[10] k6 是一種現(xiàn)代的開源性能和負(fù)載測試工具,用 Go 編寫并且可以用 JavaScript 編寫腳本。 文章1、Go:跨團(tuán)隊(duì)協(xié)作時(shí)如何共享對(duì)象 對(duì)象怎么可以共享呢? 2、Go Playground 還能這么玩? 多人協(xié)同編輯。 3、unsafe 真就 unsafe 嗎? 知道自己在干什么還是可以使用的。 4、你必須了解的 Go 歷史:幫助理解 Go 的設(shè)計(jì)思想和每個(gè)版本的優(yōu)勢或弱點(diǎn) 回顧 Go 版本的發(fā)展歷史。 5、2 分鐘定制一個(gè)高大上的 GitHub 首頁 GitHub 這個(gè)功能出來有一段時(shí)間了,GitHub 粉應(yīng)該定制下。 6、手撕 hashicorp/raft 算法【萬字長文】 本文是第 104 期手撕 hashicrop/raft 算法的文字版,建議搭配著視頻(本文文末)一起閱讀。 7、原來 9 張圖就可以弄懂 Go 內(nèi)存管理 從高層看內(nèi)存管理的文章,而不拘于很多細(xì)節(jié)。 8、Go 程序性能分析[11] 性能分析是排查內(nèi)存泄露等問題的常見手段,可以讓我們了解和捕獲到程序堆內(nèi)存和 Profile 信息,方便定位問題。Go 原生提供了豐富的分析工具,下面是通過幾個(gè)內(nèi)存泄露的案例對(duì) Go 程序做性能分析,并介紹相關(guān)工具原理和細(xì)節(jié)。 開源項(xiàng)目1、tamago[12] 適用于 ARM SoC 的 Bare Metal Go。該框架可在裸機(jī) ARM System-on-Chip(SoC)設(shè)置(包括到目前為止的 Raspberry Pi 2 和 Zero)上啟用 Go 應(yīng)用的編譯和執(zhí)行。可能是更成熟的 TinyGo[13] 的唯一 ARM 替代品,因?yàn)?TamaGo 修改了標(biāo)準(zhǔn) Go 發(fā)行版,而 TinyGo 是基于 LLVM 的獨(dú)特編譯器。 2、go-diagrams[14] 使用 Go 創(chuàng)建漂亮的系統(tǒng)圖。 3、mouthful[15] Disqus 評(píng)論系統(tǒng)的自助托管 Go 替代方案。為你的網(wǎng)站添加評(píng)論。 4、twtxt[16] Go 實(shí)現(xiàn)的去中心化類 Twitter的微博客平臺(tái)。 5、prisma-client-go[17] Prisma Client Go 是一個(gè)自動(dòng)生成且完全類型安全的數(shù)據(jù)庫客戶端。 6、overseer[18] 用于創(chuàng)建可監(jiān)控、支持優(yōu)雅重啟和自升級(jí)的 Go 應(yīng)用的 module。 7、gin-metrics[19] 為 prometheus 準(zhǔn)備的度量指標(biāo),針對(duì) Gin 框架。 8、gomponents[20] Go 中的聲明性視圖組件,可以渲染為 HTML。這里有一篇介紹的文章:https://www.maragu.dk/blog/gomponents-declarative-view-components-in-go/。 資源&&工具1、goconst[21] 在 Go 中查找可以被常量替換的重復(fù)字符串。 2、logo-ls[22] 現(xiàn)代 ls 命令與 VS Code 一樣的文件"圖標(biāo)"和 Git 集成。 3、siegfried[23] 基于簽名的文件格式識(shí)別。 4、Dbmate[24] 輕量級(jí),與框架無關(guān)的數(shù)據(jù)庫遷移工具。用 Go 語言編寫,但可以與以任何語言編寫的使用數(shù)據(jù)庫的應(yīng)用程序一起使用。支持 MySQL,Postgres,SQLite 和 ClickHouse。 5、msfs2020-go[25] 使用 golang 連接到 Microsoft Flight Simulator 2020。 6、程序員的數(shù)學(xué)[26](英文) 免費(fèi)電子書,專為程序員準(zhǔn)備。 7、pixelvideo[27] 如何使用 2D 游戲庫制作視頻的簡單示例。 參考資料[1] polaris1119/golangweekly: https://github.com/polaris1119/golangweekly [2] 提交 issue: https://github.com/polaris1119/golangweekly/issues [3] Go 對(duì)靜態(tài)資源的內(nèi)嵌支持的提案被接受,在 Go1.16 實(shí)現(xiàn): https://github.com/golang/go/issues/41191#issuecomment-697710797 [4] pkg.go.dev 計(jì)劃重新設(shè)計(jì): https://github.com/golang/go/issues/41585 [5] TinyGo 對(duì) ESP32 和 ESP8266 的初始支持: https://aykevl.nl/2020/09/tinygo-esp32 [6] Caddy 2.2.0 發(fā)布: https://github.com/caddyserver/caddy/releases/tag/v2.2.0 [7] ZeroSSL: https://zerossl.com/features/acme/ [8] twirp 7.1 發(fā)布: https://github.com/twitchtv/twirp [9] Go 1.16 go module 機(jī)制默認(rèn)開啟: https://go-review.googlesource.com/c/go/ /255052 [10] k6 v0.28.0 發(fā)布: https://github.com/loadimpact/k6/releases/tag/v0.28.0 [11] Go 程序性能分析: https://segmentfault.com/a/1190000024541490 [12] tamago: https://github.com/f-secure-foundry/tamago [13] TinyGo: https://tinygo.org/ [14] go-diagrams: https://github.com/blushft/go-diagrams [15] mouthful: https://github.com/vkuznecovas/mouthful [16] twtxt: https://github.com/jointwt/twtxt [17] prisma-client-go: https://github.com/prisma/prisma-client-go [18] overseer: https://github.com/jpillora/overseer [19] gin-metrics: https://github.com/penglongli/gin-metrics [20] gomponents: https://github.com/maragudk/gomponents [21] goconst: https://github.com/jgautheron/goconst [22] logo-ls: https://github.com/Yash-Handa/logo-ls [23] siegfried: https://github.com/richardlehane/siegfried [24] Dbmate: https://github.com/amacneil/dbmate [25] msfs2020-go: https://github.com/lian/msfs2020-go [26] 程序員的數(shù)學(xué): https://yurichev.com/writings/Math-for-programmers.pdf [27] pixelvideo: https://github.com/markustenghamn/pixelvideo [28] Go語言中文網(wǎng): https://studygolang.com/go/weekly [29] 微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go語言中文網(wǎng) |