Go語(yǔ)言愛(ài)好者周刊:第 124 期
這里記錄每周值得分享的 Go 語(yǔ)言相關(guān)內(nèi)容,周日發(fā)布。
本周刊開(kāi)源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟件/資源等,請(qǐng)提交 issue[2] 。
鑒于一些人可能沒(méi)法堅(jiān)持把英文文章看完,因此,周刊中會(huì)盡可能推薦優(yōu)質(zhì)的中文文章。優(yōu)秀的英文文章,我們的 GCTT 組織會(huì)進(jìn)行翻譯。

題圖:Go1.18 Beta1 發(fā)布
刊首語(yǔ)
上期的題目:
package?main
import?"fmt"
func?main()?{
?var?i?float64?=?3?/?2
?fmt.Print(i)
}
A:1;B:1.5;C:編譯錯(cuò)誤;D:1.49
正確答案:A。關(guān)鍵在于 3/2 計(jì)算的結(jié)果,3、2 這是整型字面值常量。根據(jù) Go 的規(guī)則,3/2 結(jié)果也是整型,因此是 1,最后會(huì)隱式轉(zhuǎn)換為 float64。
本期提供一道關(guān)于 json 和 context 的題:
package?main
import?(
?"context"
?"encoding/json"
?"fmt"
)
func?main()?{
?data,?_?:=?json.Marshal(context.WithValue(context.Background(),?"a",?"b"))
?fmt.Println(string(data))
}
資訊
1、Gorilla Toolkit 尋找新的維護(hù)者[3]
有好些熟悉的庫(kù),比如 mux、schema、handlers、sessions 等。
2、Go1.18 中 interface{} 替換為 any[4]
執(zhí)行類(lèi)似 gofmt -w -r 'interface{} -> any' src 命令替換。
3、immudb 1.2 發(fā)布[5]
用于系統(tǒng)和應(yīng)用程序的輕量級(jí)高速不可變數(shù)據(jù)庫(kù)。
4、go-mysql 1.4.0 發(fā)布[6]
純 Go 實(shí)現(xiàn)的 MySQL 網(wǎng)絡(luò)協(xié)議庫(kù)。
5、Bleve 2.3.0 發(fā)布[7]
Go 實(shí)現(xiàn)的全文本搜索和索引庫(kù)。
6、XLSX 3.2.4 發(fā)布[8]
用于讀取和寫(xiě)入 XLSX(Excel)文件的庫(kù)。
7、Go1.18 Beta1 發(fā)布:泛型版真的來(lái)了
Go 發(fā)布了 Go1.18 Beta1 版本,Russ Cox 專(zhuān)門(mén)發(fā)布了一篇博文簡(jiǎn)單介紹:https://go.dev/blog/go1.18beta1。
文章
各種 Go 資源越來(lái)越多,但很多好資源,很多人并不知道,于是萌生了做一個(gè)「Go網(wǎng)址導(dǎo)航」,網(wǎng)址:https://hao.studygolang.com/,基于 studygolang 子域名構(gòu)建,是自然而然的事情。
企業(yè)內(nèi)部搭建搜索引擎常用 Solr、Elasticsearch,它們都是使用 Java 實(shí)現(xiàn)的,底層依賴(lài) Lucene,Java 相對(duì)來(lái)說(shuō)占用較多內(nèi)存。而今天要介紹的這個(gè)項(xiàng)目,目標(biāo)就是作為 ES 的替代者,一個(gè)輕量級(jí)搜索引擎:Zinc。
3、程序員瑞士軍刀:各種結(jié)構(gòu)的轉(zhuǎn)換工具
有各種工具。
本文是 Go 愛(ài)好者「LuciferMS」投稿。
5、實(shí)戰(zhàn):如何使用 Go 從 HTML 生成 PDF 報(bào)告
作為一名開(kāi)發(fā)人員,我有時(shí)需要為我的應(yīng)用程序創(chuàng)建 PDF 報(bào)告。
6、我好像發(fā)現(xiàn)了一個(gè) Go 的 Bug?
從重構(gòu)說(shuō)起。
開(kāi)源項(xiàng)目
1、MapReduce[9]
Go 的 Map-Reduce 框架。
2、miniredis[10]
純 Go Redis 測(cè)試服務(wù)器,用于 Go 單元測(cè)試。
3、netlink[11]
包 netlink 提供對(duì) Linux netlink 套接字的低級(jí)訪問(wèn)。
4、singleflight[12]
支持泛型的 singleflight。
5、Helmet[13]
Go 實(shí)現(xiàn)的輕量級(jí)云原生 API 網(wǎng)關(guān)。

資源&&工具
1、gofumpt[14]
一個(gè)嚴(yán)格的 gofmt 工具。
2、golang-base-project[15]
一個(gè)最小的 Go 項(xiàng)目,具有現(xiàn)成的用戶(hù)身份驗(yàn)證功能。所有前端資產(chǎn)在每次頁(yè)面加載時(shí)應(yīng)小于 100 kB。
3、nvm-windows[16]
適用于 Windows 的node.js 版本管理實(shí)用程序,使用 Go 編寫(xiě)。
訂閱
這個(gè)周刊每周日發(fā)布,同步更新在Go語(yǔ)言中文網(wǎng)[17]和微信公眾號(hào)[18]。
微信搜索"Go語(yǔ)言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]Gorilla Toolkit 尋找新的維護(hù)者: https://github.com/gorilla/mux/issues/659
[4]Go1.18 中 interface{} 替換為 any: https://github.com/golang/go/commit/2580d0e08d5e9f979b943758d3c49877fb2324cb
[5]immudb 1.2 發(fā)布: https://github.com/codenotary/immudb
[6]go-mysql 1.4.0 發(fā)布: https://github.com/go-mysql-org/go-mysql
[7]Bleve 2.3.0 發(fā)布: https://github.com/blevesearch/bleve
[8]XLSX 3.2.4 發(fā)布: https://github.com/tealeg/xlsx
[9]MapReduce: https://github.com/BWbwchen/MapReduce
[10]miniredis: https://github.com/alicebob/miniredis
[11]netlink: https://github.com/mdlayher/netlink
[12]singleflight: https://github.com/marwan-at-work/singleflight
[13]Helmet: https://github.com/Spacewalkio/Helmet
[14]gofumpt: https://github.com/mvdan/gofumpt
[15]golang-base-project: https://github.com/uberswe/golang-base-project
[16]nvm-windows: https://github.com/coreybutler/nvm-windows
[17]Go語(yǔ)言中文網(wǎng): https://studygolang.com/go/weekly
[18]微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
