Go語(yǔ)言愛(ài)好者周刊:第 66 期 — 一道關(guān)于 fmt 的題
這里記錄每周值得分享的 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ò)文末「閱讀原文」查看。

題圖:plenti,又一個(gè) Go 語(yǔ)言實(shí)現(xiàn)的靜態(tài)網(wǎng)站生成器。
刊首語(yǔ)
昨天是 1024,大家沒(méi)有加班吧!
今天這道題,你看看輸出啥?
package?main
import?"fmt"
type?T?struct?{
?x?int
}
func?(t?T)?String()?string?{?return?"boo"?}
func?main()?{
?t?:=?T{123}
?fmt.Printf("%v\n",?t)
?fmt.Printf("%#v\n",?t)
}
資訊
1、為 Go 盡一份力的時(shí)候到了:Go 官方 2020 年開(kāi)發(fā)者調(diào)查開(kāi)啟
Go 項(xiàng)目組正在研究人們關(guān)于 Go 的經(jīng)驗(yàn)和想法。您的反饋將幫助他們改進(jìn)現(xiàn)有工具,并確定新功能的優(yōu)先級(jí),確保所有 Go 開(kāi)發(fā)人員獲得更好的體驗(yàn)。一旦調(diào)查結(jié)束,他們將與 Go 社區(qū)公開(kāi)分享匯總的結(jié)果。
2、validating 2.0 發(fā)布[3]
Go 庫(kù),用于驗(yàn)證結(jié)構(gòu),map 和切片。帶有各種各樣的驗(yàn)證器工廠(它們生成實(shí)際的驗(yàn)證),包括相等性,范圍,包含在一組值中,長(zhǎng)度等。
3、gomodifytags 1.11.0 發(fā)布[4]
這個(gè)工具你日常工作可能一直在用,只是不知道是它干的。如果要在結(jié)構(gòu)字段中編輯,更新或添加標(biāo)簽,則使工作變得更輕松。與 Vim,Atom,Emacs 和 VS Code 集成。
一個(gè)讓業(yè)務(wù)開(kāi)發(fā)效率提高 10 倍的 Go 庫(kù)。
文章
1、臥槽!一道關(guān)于 json 和 slice 的題難倒了 80% 的人
這是上期周刊的問(wèn)題解答。
2、對(duì)比三款 Go Playground:你喜歡哪款?
官方的弱爆了。。。
拾遺主要是收集和 golang 相關(guān)的瑣碎知識(shí)。
在 Go 中創(chuàng)建的所有 Goroutine 都會(huì)被一個(gè)內(nèi)部的調(diào)度器所管理。Go 調(diào)度器嘗試為所有的 Goroutine 分配運(yùn)行時(shí)間,并且在當(dāng)前的 Goroutine 阻塞或者終止的時(shí)候,Go 調(diào)度器會(huì)通過(guò)運(yùn)行 Goroutine 的方式使所有 CPU 保持忙碌狀態(tài)。這個(gè)調(diào)度器實(shí)際上是作為一個(gè)特殊的 Goroutine 運(yùn)行的。
5、分析字節(jié)跳動(dòng)高級(jí) Go 工程師的要求,知曉自己的努力方向
來(lái)自一個(gè) Go 招聘的公公眾號(hào)。專門分享 Go 求職招聘等。
6、何時(shí)使用 Rust 和何時(shí)使用 Golang?
在本教程中,我們將就 Golang 和 Rust 進(jìn)行比較和對(duì)比,評(píng)估這兩種編程語(yǔ)言的性能,并發(fā)性,內(nèi)存管理和整體開(kāi)發(fā)人員體驗(yàn)。我們還將概述這些元素,以幫助您一目了然地為項(xiàng)目選擇正確的語(yǔ)言。
7、Go 已經(jīng)開(kāi)始大爆發(fā)了 ?專注于 Go 職場(chǎng)、招聘和求職
Go 圈的朋友應(yīng)該能發(fā)現(xiàn),這兩年 Go 受到越來(lái)越多的關(guān)注。我們不提跟國(guó)外,只看國(guó)內(nèi)。去年年底,鵝廠公布了他們使用的 Top 語(yǔ)言,其中 Go 排在了第三位。據(jù)內(nèi)部人士透露,今年有望進(jìn)入第二。大廠大量使用 Go,這是一個(gè)很好信號(hào)。
8、面試官:知道 MVCC 嗎?在 etcd 中的如何實(shí)現(xiàn)的
在數(shù)據(jù)庫(kù)領(lǐng)域,面對(duì)高并發(fā)環(huán)境下數(shù)據(jù)沖突的問(wèn)題,業(yè)界常用的解決方案有兩種:避免沖突和允許沖突。
9、Go 語(yǔ)言 select 語(yǔ)句中實(shí)現(xiàn)優(yōu)先級(jí)
Go 語(yǔ)言中的 select 語(yǔ)句用于監(jiān)控并選擇一組 case 語(yǔ)句執(zhí)行相應(yīng)的代碼。
time.Sleep 內(nèi)部代碼實(shí)現(xiàn)大有文章,每個(gè) Go 版本的 timer 的實(shí)現(xiàn)都有所不同,本文基于 Go1.14,分別從宏觀和圍觀介紹一遍主要調(diào)度過(guò)程。
開(kāi)源項(xiàng)目
1、hc[5]
一個(gè)輕量級(jí)的框架,用于在 Go 中開(kāi)發(fā) HomeKit 配件。HomeKit 是 Apple 的框架,用于管理 Apple 設(shè)備中的“智能家居”設(shè)備,您可以使用 HomeKit 附件協(xié)議(HAP)來(lái)為您選擇的硬件創(chuàng)建 HomeKit 橋。
2、systray[6]
一個(gè)跨平臺(tái)的 Go 庫(kù),用于在通知區(qū)域中放置圖標(biāo)和菜單。

3、Crowdsec[7]
開(kāi)源的輕量級(jí)代理,可檢測(cè)并響應(yīng)不良行為。它還會(huì)自動(dòng)受益于我們?nèi)蛏鐓^(qū)范圍內(nèi)的 IP 信譽(yù)數(shù)據(jù)庫(kù)。
4、scany[8]
Go 實(shí)現(xiàn)的用于將數(shù)據(jù)從數(shù)據(jù)庫(kù)掃描到 Go 結(jié)構(gòu)的庫(kù)。
5、gobot[9]
使用 Go 編程語(yǔ)言的 IOT 框架。
6、gweb[10]
用純 Go 編寫并編譯成 WASM 的瀏覽器游戲庫(kù)。
7、bluge[11]
Go 實(shí)現(xiàn)的文本索引庫(kù)。
8、bot2048[12]
2048游戲機(jī)器人玩家。Go 語(yǔ)言實(shí)現(xiàn)。對(duì)算法感興趣的可以看該文:https://thomas-joly.com/bot-2048-create-an-artificial-player/。
資源&&工具
1、verless[13]
一個(gè)簡(jiǎn)單、輕量級(jí)靜態(tài)網(wǎng)站生成器。輪子有點(diǎn)多。這里還有一個(gè) plenti[14],這個(gè)感覺(jué)比 verless 更正規(guī)?
2、Chronos[15]
用于 Go 語(yǔ)言的靜態(tài)競(jìng)爭(zhēng)檢測(cè)器。作者建議和 go race 結(jié)合使用。
3、 gof[16]
GoF 23 種設(shè)計(jì)模式的 Go 實(shí)現(xiàn)。
4、panoptes-stream[17]
yahoo 開(kāi)源的云原生分布式流網(wǎng)絡(luò)遙測(cè)工具。

5、cassler[18]
SSL 證書驗(yàn)證工具 cassler。
6、repull[19]
使用較新版本的鏡像重新啟動(dòng) Docker 容器的工具。
7、3d-gopher-maze[20]
基于終端的簡(jiǎn)單 3D 迷宮爬行游戲。
8、dnsping[21]
檢查 DNS 服務(wù)器的數(shù)據(jù)包丟失和延遲問(wèn)題。
7、goshs[22]
Go 語(yǔ)言編寫,替代 Python 的 SimpleHTTPServer,具有許多功能和出色的設(shè)計(jì)。

8、pixlet[23]
為基于像素的顯示器構(gòu)建應(yīng)用程序。

訂閱
這個(gè)周刊每周日發(fā)布,同步更新在Go語(yǔ)言中文網(wǎng)[24]和微信公眾號(hào)[25]。
微信搜索"Go語(yǔ)言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]validating 2.0 發(fā)布: https://github.com/RussellLuo/validating
[4]gomodifytags 1.11.0 發(fā)布: https://github.com/fatih/gomodifytags
[5]hc: https://github.com/brutella/hc
[6]systray: https://github.com/getlantern/systray
[7]Crowdsec: https://github.com/crowdsecurity/crowdsec
[8]scany: https://github.com/georgysavva/scany
[9]gobot: https://github.com/hybridgroup/gobot
[10]gweb: https://github.com/life4/gweb
[11]bluge: https://github.com/blugelabs/bluge
[12]bot2048: https://github.com/lunatikub/bot2048
[13]verless: https://github.com/verless/verless
[14]plenti: https://github.com/plentico/plenti
[15]Chronos: https://github.com/amit-davidson/Chronos
[16]gof: https://github.com/qiualiang/gof
[17]panoptes-stream: https://github.com/yahoo/panoptes-stream
[18]cassler: https://github.com/msfidelis/cassler
[19]repull: https://github.com/jdevelop/repull
[20]3d-gopher-maze: https://github.com/necrophonic/3d-gopher-maze
[21]dnsping: https://github.com/fortio/dnsping
[22]goshs: https://github.com/patrickhener/goshs
[23]pixlet: https://github.com/tidbyt/pixlet
[24]Go語(yǔ)言中文網(wǎng): https://studygolang.com/go/weekly
[25]微信公眾號(hào): https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
