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

題圖:https://github.com/guark/guark,使用 Go 構(gòu)建超棒的桌面應(yīng)用
刊首語
Go 1.16(還未發(fā)布)編譯的文件比 1.15 小了,有人利用 VictoriaMetrics 做了測試。
$?ls?-lGg?--si?bin/
total?34M
-rwxr-xr-x?1?19M?Nov??7?01:19?victoria-metrics-go1.15.4
-rwxr-xr-x?1?16M?Nov??7?01:21?victoria-metrics-go-tip
這期看一道關(guān)于 IEEE-754 浮點數(shù)的題,以下代碼輸出什么?(題目來自 Go101)
package?main
import?"math"
func?main()?{
?a,?b,?c?:=?2.0,?1.0,?0.0
?x,?y?:=?a/c,?b/c?????//?infinity
?n?:=?math.NaN()??????//?not?a?number
?m?:=?math.Sqrt(-1.0)?//?not?a?number
?println(x?==?y,?m?==?n)
}
資訊
1、Micro 3.0.0 發(fā)布[3]
云原生微服務(wù)開發(fā)平臺,相比之前有特別大的變化。
小版本發(fā)布,修復(fù)一些 bug。
只是個人的言論吧。
4、tbls 1.44.0 發(fā)布[4]
用于記錄數(shù)據(jù)庫文檔的 CI 友好工具。
5、GoLand 2020.3 EAP#7[5]
支持類型參數(shù)中的方括號。歡迎試用提建議。
文章
1、提前試用將在 Go1.16 中發(fā)布的內(nèi)嵌靜態(tài)資源功能
2020 年 10 月 30 日,Russ Cox 提交了最終的實現(xiàn),意味著你在 tip 版本可以試用該功能了。Go1.16 版本會包含該功能。歡迎大家試用,反饋建議。
2、圖解:宏觀角度看 Go 語言如何實現(xiàn)垃圾回收中的 Stop the World
本篇文章討論實現(xiàn)原理基于 Go 1.13。
3、go-zero 是如何追蹤你的請求鏈路的[6]
微服務(wù)架構(gòu)中,調(diào)用鏈可能很漫長,從 http 到 rpc ,又從 rpc 到 http 。而開發(fā)者想了解每個環(huán)節(jié)的調(diào)用情況及性能,最佳方案就是 全鏈路跟蹤。
4、來自 HackerNew 的討論:人生苦短,我要換Go!
Python 愛好者換 Go?
這個工具值得大家一試。
6、Go 中的循環(huán)是如何轉(zhuǎn)為匯編的?看完你懂了嗎?
看懂需要一定的功力。
Glow,Charm 主打的產(chǎn)品。
切片底層不就是指針指向底層數(shù)組數(shù)據(jù)嗎,為何不直接傳遞切片,兩者有什么區(qū)別?
Go 的一系列內(nèi)存管理手段(內(nèi)存分配,垃圾回收,內(nèi)存訪問檢查)使許多開發(fā)者的開發(fā)工作變得很輕松。編譯器通過在代碼中引入“邊界檢查” 來確保安全地訪問內(nèi)存。
本文記錄了一些我的踩坑經(jīng)驗,希望能給還在掙扎中的 Gopher 一些幫助。
開源項目
1、limiter[7]
Rate Limit 中間件,支持 HTTP、FastHTTP,Gin、Echo 等框架。
2、go-sqlbuilder[8]
靈活而強大的 SQL 字符串構(gòu)建器庫以及零配置 ORM。
3、scan[9]
直接將 database/sql 行掃描到結(jié)構(gòu)體、slice 和基本類型。
4、gosivy[10]
實時圖形化展示 Go 進程度量數(shù)據(jù)。
5、paketo-buildpacks/go[11]
Go 云原生構(gòu)建包。
6、gogm[12]
用于 Neo4j 的 Golang 對象圖映射器。
7、carbon[13]
用于日期時間的簡單,語義化且對開發(fā)人員友好的 golang 軟件包。
8、goyave-template[14]
優(yōu)雅的 Web 框架 goyave 模板項目。
9、qs[15]
用于將結(jié)構(gòu)體編碼為 URL 查詢參數(shù)的庫。
10、webbrowser[16]
Go 中的 Python 網(wǎng)絡(luò)瀏覽器。用于在默認瀏覽器上打開網(wǎng)頁的簡單 API。
資源&&工具
1、imgcat[17]
在終端上將圖像輸出為 RGB ANSI 圖形的工具。
2、https://github.com/pterm/pterm
一個現(xiàn)代化的 Go 模塊,用于美化控制臺輸出。具有圖表、進度條、表格、樹等,完全可配置且 100% 跨平臺兼容。
3、goxygen[18]
使用 Go, Angular, React 或 Vue 快速開發(fā)現(xiàn)代 Web 項目。這是在原來的基礎(chǔ)上做了改進。
4、kubei[19]
k8s 集群中鏡像的即時漏洞掃碼工具。
5、Go 學(xué)習(xí)知識地圖 2020[20]
和之前版本沒區(qū)別?
6、博客第 154 期[21]
Go 語言是如何幫助拯救美國醫(yī)保網(wǎng)站的。
7、reporter[22]
從 Grafana 儀表板生成 PDF 報告的服務(wù)。
8、aresdb[23]
由 GPU 驅(qū)動的實時分析存儲和查詢引擎。Uber 出品。

9、structslop[24]
Go 的靜態(tài)分析器,建議對結(jié)構(gòu)字段進行重新布置以提供最大的空間/分配效率。這里有一篇介紹文章:https://medium.com/orijtech-developers/efficient-struct-packing-guided-pass-for-go-92255872ec72。

10、Ruleguard by example[25]
它通過有意義的示例介紹了大多數(shù)功能和概念。
訂閱
這個周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[26]和微信公眾號[27]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]Micro 3.0.0 發(fā)布: https://github.com/micro/micro
[4]tbls 1.44.0 發(fā)布: https://github.com/k1LoW/tbls
[5]GoLand 2020.3 EAP#7: https://blog.jetbrains.com/go/2020/11/06/goland-2020-3-eap-7/
[6]go-zero 是如何追蹤你的請求鏈路的: https://studygolang.com/articles/31415
[7]limiter: https://github.com/ulule/limiter
[8]go-sqlbuilder: https://github.com/huandu/go-sqlbuilder
[9]scan: https://github.com/blockloop/scan
[10]gosivy: https://github.com/nakabonne/gosivy
[11]paketo-buildpacks/go: https://github.com/paketo-buildpacks/go
[12]gogm: https://github.com/mindstand/gogm
[13]carbon: https://github.com/golang-module/carbon
[14]goyave-template: https://github.com/System-Glitch/goyave-template
[15]qs: https://github.com/sonh/qs
[16]webbrowser: https://github.com/toqueteos/webbrowser
[17]imgcat: https://github.com/trashhalo/imgcat
[18]goxygen: https://github.com/Shpota/goxygen
[19]kubei: https://github.com/Portshift/Kubei
[20]Go 學(xué)習(xí)知識地圖 2020: https://github.com/sangam14/GopherLabs
[21]博客第 154 期: https://changelog.com/gotime/154
[22]reporter: https://github.com/IzakMarais/reporter
[23]aresdb: https://github.com/uber/aresdb
[24]structslop: https://github.com/orijtech/structslop
[25]Ruleguard by example: https://go-ruleguard.github.io/by-example/
[26]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[27]微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
