Go語言愛好者週刊:第 161 期

語言: CN / TW / HK

這裡記錄每週值得分享的 Go 語言相關內容,週日釋出。本週刊開源(GitHub: polaris1119/golangweekly [1] ),歡迎投稿,推薦或自薦文章/軟體/資源等,請 提交 issue [2]

鑑於一些人可能沒法堅持把英文文章看完,因此,週刊中會盡可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。

由於微信公眾號不支援外鏈,文中大量連結可通過文末「 閱讀原文 」檢視。

題圖:goroutine profiler

刊首語

上期的題目參與人數達到了歷史新高,不過正確率缺十分堪憂,只有 14%。一起看看。

以下程式碼輸出什麼?

package main

import "fmt"

type temp struct{}

func (t *temp) Add(elem int) *temp {
 fmt.Println(elem)
 return &temp{}
}

func main() {
 tt := &temp{}
 defer tt.Add(1).Add(2)
 tt.Add(3)
}

A:1 3 2;B:1 2 3;C:3 1 2;D:3 2 1

正確答案是 A(1 3 2)。關於解釋,可以看看 「Go語言中文網」每日一題中,網友 jan-bar 的解答:https://studygolang.com/interview/question/rhhh4hefk00 該題的 5 樓。

本期一道關於 slice 的題目。以下程式碼輸出什麼?

package main

import "fmt"

func main() {
 s := []string{"A", "B", "C"}

 t := s[:1]
 fmt.Println(&s[0] == &t[0])

 u := append(s[:1], s[2:]...)
 fmt.Println(&s[0] == &u[0])
}

資訊

1、 NATS 2.9 釋出 [3]

CNCF 孵化的雲本地訊息傳遞系統。

2、 Ginkgo 2.2 釋出 [4]

現代的測試框架。

3、 scc 3.1 釋出 [5]

與 cloc,sloccount 和 tokei 類似的工具。用於計數許多程式語言中的程式碼行,空行,註釋行和原始碼的物理行。

4、 mo 1.5 釋出 [6]

一個為函數語言程式設計愛好者準備的,基於泛型構建。

5、 mpb v8.1 釋出 [7]

在終端為 Go 命令列應用程式顯示進度條。

文章

1、 超乾貨!徹底搞懂Golang記憶體管理和垃圾回收

本文主要以go記憶體管理為切入點再到go垃圾回收,系統地講解了go自動記憶體管理系統的設計和原理。

2、 Go每日一庫之一個簡單、易用、安全的型別轉換工具

在使用Go編碼過程中,大家一定遇到過型別轉換的場景。今天就給大家介紹一個簡單、易用且安全的型別轉換工具:cast。

3、 Go:你之前的基準測試可能是錯的。

今天給大家帶來一篇關於基準測試的文章。

4、 圖文並茂!一文掌握Kubernetes核心內容

在雲原生技術發展的浪潮之中,Kubernetes作為容器編排領域的事實標準和雲原生領域的關鍵專案。

5、 如何像gitlab-runner那樣將Go應用安裝為系統服務

service包讓我們的程式有了將自己安裝為system service的能力。

6、 Google 出品依賴注入工具Wire使用指北

Wire 是一個強大的依賴注入工具。與 Inject 、Dig 等不同的是,Wire只生成程式碼而不是使用反射在執行時注入,不用擔心會有效能損耗。

開源專案

1、 wunderbase [8]

建立在 Firecracker、SQLite 和 Prisma 之上的無伺服器 GraphQL 資料庫。

2、 Picto [9]

基於 Vue.js 和 Go 構建的聊天服務。

資源&&工具

1、 GopherCon UK 2022 影片 [10]

28 個影片。

2、 Go 的力量:tests [11]

一本英文圖書。

3、 fgtrace [12]

一個實驗性的 goroutine Profiler/Tracer。

4、 jqp [13]

一個用於試驗 jq 的 TUI Playground。

5、 演算法大全 [14]

Go實現。

6、 mgob [15]

MongoDB 備份工具。

7、 vault [16]

密碼管理工具。

8、 tbls [17]

tbls 是用於記錄資料庫的 CI 友好工具。

訂閱

這個週刊每週日釋出,同步更新在 Go語言中文網 [18]微信公眾號 [19]

微信搜尋"Go語言中文網"或者掃描二維碼,即可訂閱。

wechat

參考資料

[1]

polaris1119/golangweekly: https://github.com/polaris1119/golangweekly

[2]

提交 issue: https://github.com/polaris1119/golangweekly/issues

[3]

NATS 2.9 釋出: https://nats.io/blog/nats-server-29-release/

[4]

Ginkgo 2.2 釋出: https://github.com/onsi/ginkgo

[5]

scc 3.1 釋出: https://github.com/boyter/scc

[6]

mo 1.5 釋出: https://github.com/samber/mo

[7]

mpb v8.1 釋出: https://github.com/vbauerster/mpb

[8]

wunderbase: https://github.com/wundergraph/wunderbase

[9]

Picto: https://github.com/onfe/Picto

[10]

GopherCon UK 2022 影片: https://www.youtube.com/playlist?list=PLDWZ5uzn69exbERujDiGxOadne_nkibSo

[11]

Go 的力量:tests: https://bitfieldconsulting.com/books/tests

[12]

fgtrace: https://github.com/felixge/fgtrace

[13]

jqp: https://github.com/noahgorstein/jqp

[14]

演算法大全: https://the-algorithms.com/language/go

[15]

mgob: https://github.com/stefanprodan/mgob

[16]

vault: https://github.com/hashicorp/vault

[17]

tbls: https://github.com/k1LoW/tbls

[18]

Go語言中文網: 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