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

題圖:Stack Overflow 2021 年調查報告
刊首語
上期題目由網(wǎng)友「愛笑」投稿,以下代碼輸出什么,你知道為什么嗎?
package main
import (
"fmt"
)
func main() {
nums := []int{1, 2, 3, 4, 5, 6, 7}
k := 3
rotate(nums, k)
fmt.Println(nums)
}
func rotate(nums []int, k int) {
k = k % len(nums)
nums = append(nums[len(nums)-k:], nums[0:len(nums)-k]...)
}
A:[5 6 7 1 2 3 4] B:[1 2 3 4 5 6 7] C:[4 5 6 7 1 2 3]
正確答案是 B。主要原因是 append 后的 nums 是新數(shù)組,它并不會影響 main 函數(shù)中的 nums。如果最后不是賦值給 nums,而是使用 copy,結果就是 A 了:
copy(nums, append(nums[len(nums)-k:], nums[0:len(nums)-k]...))
本期是一道關于 json 的題目,以下代碼輸出什么?
package main
import (
"encoding/json"
"fmt"
)
func main() {
var p *int
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(b))
}
資訊
1、Go 1.16.7 和 Go1.15.15 發(fā)布[3]
同時,Go 1.17 發(fā)布了 RC2[4],離正式版發(fā)布不遠了。
2、Ent 0.9.0 發(fā)布[5]
Facebook 出品,新的 Upsert API。
3、Stack Overflow 發(fā)布 2021 年調查報告[6]
Go 在最想學習榜中排名第四。
4、gohugo v0.87.0 發(fā)布[7]
支持時間、日期以及貨幣的本地化。
5、Kubernetes 1.22 版本發(fā)布[8]
號稱達到新的巔峰。
6、TIOBE 發(fā)布 8 月編程語言榜單:Go 排名如何?
大家比較看好 Go,但感覺這榜單。。。
誰在招 Gopher
整理近期的 Go 職位。有招聘需求可以到「Go招聘」發(fā)布!
文章
Go1.16 后有了更多選擇。
大部分時候,標準庫是最好的選擇。
3、用 Go 實現(xiàn)類似 Nginx 的 Access Log
看看是如何處理的。
安全問題越來越受到重視。
你一般怎么構建呢?
微服務必備。
7、Go 基于 I/O 多路復用的 TCP 協(xié)議流解析實踐[9]
基于Go經(jīng)典的阻塞I/O模型實現(xiàn)了一個基于TCP流的自定義協(xié)議的解析
方便日常使用。
開源項目
1、virgo[10]
基于圖的配置語言。

2、cloudflare-go[11]
CloudFlare API 的 Go 庫。
3、v2[12]
簡約而有主見的 Feed 閱讀器。
4、phonenumbers[13]
Google 電話號碼解析庫的 Go 移植版。
資源&&工具
1、cxgo[14]
將 C 轉為 Go 的工具,純 Go 實現(xiàn)。
2、 Peanut[15]
為開發(fā)和測試管道輕松地部署數(shù)據(jù)庫和服務。
3、chezmoi[16]
安全地在多個不同的機器上管理你的 dotfiles。
4、播客第 191 期[17]
Go 語言實踐觀點集合。
訂閱
這個周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[18]和微信公眾號[19]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
往期推薦
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]Go 1.16.7 和 Go1.15.15 發(fā)布: https://studygolang.com/topics/14096
[4]Go 1.17 發(fā)布了 RC2: https://groups.google.com/g/golang-announce/c/yk30ovJGXWY
[5]Ent 0.9.0 發(fā)布: https://entgo.io/blog/2021/08/05/announcing-upsert-api/
[6]Stack Overflow 發(fā)布 2021 年調查報告: https://insights.stackoverflow.com/survey/2021#technology-most-loved-dreaded-and-wanted
[7]gohugo v0.87.0 發(fā)布: https://gohugo.io/news/0.87.0-relnotes/
[8]Kubernetes 1.22 版本發(fā)布: https://kubernetes.io/blog/2021/08/04/kubernetes-1-22-release-announcement/
[9]Go 基于 I/O 多路復用的 TCP 協(xié)議流解析實踐: https://tonybai.com/2021/07/31/io-multiplexing-model-tcp-stream-protocol-parsing-practice-in-go
[10]virgo: https://github.com/r2d4/virgo
[11]cloudflare-go: https://github.com/cloudflare/cloudflare-go
[12]v2: https://github.com/miniflux/v2
[13]phonenumbers: https://github.com/nyaruka/phonenumbers
[14]cxgo: https://github.com/gotranspile/cxgo
[15]Peanut: https://github.com/Clivern/Peanut
[16]chezmoi: https://github.com/twpayne/chezmoi
[17]播客第 191 期: https://changelog.com/gotime/191
[18]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[19]微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
