這道 Go 題正確率只有44%,稍微改下你能做對(duì)嗎?
這里記錄每周值得分享的 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)行翻譯。
由于微信公眾號(hào)不支持外鏈,文中大量鏈接可通過(guò)文末「閱讀原文」查看。

題圖:來(lái)自 golangweekly
刊首語(yǔ)
先看看上期的題目。以下代碼輸什么?
package?main
import?(
?"fmt"
)
func?main()?{
?var?nums1?[]interface{}
?nums2?:=?[]int{1,?3,?4}
?nums3?:=?append(nums1,?nums2)
?fmt.Println(len(nums3))
}
A:3;B:1;C:4;D:編譯失敗
正確答案是 B,即長(zhǎng)度是 1。正確率只有 44%。先不說(shuō)具體原因,本期將這道題稍微改一下,看看有多少人能做對(duì)。
以下代碼輸出什么?
package?main
import?(
?"fmt"
)
func?main()?{
?var?nums1?[]interface{}
?nums2?:=?[]int{1,?3,?4}
?nums3?:=?append(nums1,?nums2...)
?fmt.Println(len(nums3))
}
資訊
Go 官方發(fā)布了 Go1.18.3 和 Go1.17.11,這是兩個(gè)小版本,主要涉及 4 個(gè)安全問(wèn)題修復(fù)。
2、GoLand 2022.2 EAP[3]
這里提供了泛型更新、更改字體大小的鍵盤(pán)快捷鍵,以及導(dǎo)入多個(gè) CSV 文件的選項(xiàng)。
文章
1、用Go重寫(xiě)Node.js服務(wù):項(xiàng)目性能提升5倍,內(nèi)存減少40%
在使用 Golang 進(jìn)行重寫(xiě)后,其可處理的服務(wù)請(qǐng)求數(shù)增加了 5 倍,同時(shí)內(nèi)存消耗減半。
2、2022 年值得學(xué)習(xí)的 Golang 包
今天為大家推薦 2022 年最好的 Go 包。
3、Go中使用單調(diào)時(shí)鐘獲得準(zhǔn)確的時(shí)間間隔
墻上時(shí)鐘與單調(diào)時(shí)鐘。
4、從項(xiàng)目的一個(gè) panic 說(shuō)起:Go 中 Sync 包的分析應(yīng)用
項(xiàng)目開(kāi)發(fā)中遇到一個(gè)錯(cuò)誤 “fatal error: concurrent map read and map write”。
5、某些情況下,合理使用Go指針將大大提升程序的運(yùn)行效率
避免在循環(huán)中造成不必要的數(shù)組空指針檢查。
6、簡(jiǎn)化 Go 中對(duì) JSON 的處理
JSON 是項(xiàng)目中不可避免的。
介紹一下 httptrace 和問(wèn)題的定位過(guò)程。
8、我在抖音架構(gòu)部門(mén)后端實(shí)習(xí)半年的感悟
面經(jīng)。
開(kāi)源項(xiàng)目
1、zinc[4]
輕量級(jí)的 elasticsearch 替代者。
2、testfixtures[5]
類(lèi)似于 Ruby-on Rails 用于 Go 的測(cè)試,針對(duì)真實(shí)數(shù)據(jù)庫(kù)編寫(xiě)測(cè)試。
3、tarmac[6]
使用 Web Assembly 構(gòu)建分布式服務(wù)的框架。
4、Uniqush[7]
開(kāi)源移動(dòng)應(yīng)用通知推送服務(wù)。
5、connect-go[8]
一個(gè)更好的 gRPC。
6、Tigris[9]
一個(gè)現(xiàn)代的、可擴(kuò)展的用于構(gòu)建實(shí)時(shí)網(wǎng)站和應(yīng)用程序的后端。
7、mo[10]
基于 Go 泛型實(shí)現(xiàn)的 monad 和函數(shù)編程抽象。
資源&&工具
1、transporter[11]
在持久性引擎之間同步數(shù)據(jù),如 ETL。
2、Go 播客第 231 期[12]
Berlin 轉(zhuǎn)型為 Go 的過(guò)程。
3、webrtc-nuts-and-bolts[13]
通過(guò)代碼和詳細(xì)的文檔全面了解 WebRTC 及其協(xié)議的實(shí)際運(yùn)行情況。
4、jid[14]
通過(guò)使用 jq之 類(lèi)的過(guò)濾查詢(xún)以交互方式深入 JSON。
訂閱
這個(gè)周刊每周日發(fā)布,同步更新在Go語(yǔ)言中文網(wǎng)[15]和微信公眾號(hào)[16]。
微信搜索"Go語(yǔ)言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]GoLand 2022.2 EAP: https://blog.jetbrains.com/go/2022/06/03/goland-2022-2-eap-3-is-here-with-updates-for-generics-a-keyboard-shortcut-to-change-the-font-size-and-an-option-to-import-multiple-csv-files/
[4]zinc: https://github.com/zinclabs/zinc
[5]testfixtures: https://github.com/go-testfixtures/testfixtures
[6]tarmac: https://github.com/madflojo/tarmac
[7]Uniqush: https://github.com/uniqush/uniqush-push
[8]connect-go: https://github.com/bufbuild/connect-go
[9]Tigris: https://github.com/tigrisdata/tigris
[10]mo: https://github.com/samber/mo
[11]transporter: https://github.com/compose/transporter
[12]Go 播客第 231 期: https://changelog.com/gotime/231
[13]webrtc-nuts-and-bolts: https://github.com/adalkiran/webrtc-nuts-and-bolts
[14]jid: https://github.com/simeji/jid
[15]Go語(yǔ)言中文網(wǎng): https://studygolang.com/go/weekly
[16]微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
