Go語言愛好者週刊:第 159 期 — 這道題目有點意思

語言: CN / TW / HK

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

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

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

題圖:視覺化 Go Runtime 指標

上期題目正確率 43%,一起看下。以下程式碼輸出什麼?

package main

import "fmt"

func main() {
 var s fmt.Stringer
 s = "s"
 fmt.Println(s)
}

A:s;B:編譯錯誤;C:執行時 panic

正確答案:B。因為 字串型別沒有實現 fmt.Stringer 介面,所以編譯錯誤。

本期題目來自 Go101。以下程式碼輸出什麼?

package main

func main() {
  m := make(map[int]int, 3)
  x := len(m)
  m[1] = m[1]
  y := len(m)
  println(x, y)
}

1、 Go 1.19.1 釋出了:看看要不要升級!!!

安全更新和一些 bug 修復。

2、 結構化日誌討論 [3]

官方關於結構化日誌的討論。

3、 lipgloss 0.6 釋出 [4]

漂亮的終端佈局的風格定義。

4、 Echo v4.9 釋出 [5]

高效能的 REST 框架。

5、 mpb v8.0 釋出 [6]

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

6、 scany 1.2 釋出 [7]

Go 實現的用於將資料從資料庫掃描到 Go 結構的庫。

7、 FastHTTP 1.40 釋出 [8]

Go 快速的 HTTP 包。為高效能而調優。 熱路徑中的零記憶體分配。 比 net/http 快 10 倍。有興趣可以研究為什麼能做到快這麼多。

8、 weaviate 1.15 釋出 [9]

雲原生、模組化、實時向量搜尋引擎。

1、 從Go語言角度剖析關於計算機位的問題

本文主要是理解計算機記憶體的本質,1位元組=8位,1位=一個通電or沒通電的電子元件,通過不同的00101010表示不同的符號。

2、 TIOBE 9 月程式語言排行榜:Go 快進入前 10 了!!

Go 第 12 名了。

3、 一個執行緒安全的泛型支援map庫 [10]

Go語言原生的map型別並不支援併發讀寫。concurrent-map提供了一種高效能的解決方案:通過對內部map進行分片,降低鎖粒度,從而達到最少的鎖等待時間(鎖衝突)。

4、 與日俱進,在 Go 1.20 中這種高效轉換的方式又變了 [11]

Go1.20 字串和位元組陣列的高效轉換方式會變化。

5、 碼住!Golang併發安全與引用傳遞總結

因為現在服務上雲的趨勢,業務程式碼都紛紛轉向golang的技術棧。在遷移或使用的過程中,由於對golang特性的生疏經常會遇到一些問題,本文總結了golang併發安全和引數引用傳值時的一些知識。

6、 Go 生態:Prometheus的四種指標型別,我終於搞懂了

指標是用來衡量效能、消耗、效率和許多其他軟體屬性隨時間的變化趨勢。

開源專案

1、 lane [12]

泛型版優先佇列、佇列、棧等資料結構的實現。

2、 fetch [13]

簡單、好用、強大的 Go HTTP Client。

資源&&工具

1、 goleak [14]

Uber 出品的 goroutine 洩露檢測器。

2、 go-bench-viewer [15]

Go benchmark 結果檢視工具。

3、 GopherCon Europe 2022 視訊列表 [16]

油管視訊。

4、 fan2go [17]

提供基於溫度感測器的動態速度控制的簡單守護程式。

5、 sql2struct [18]

一個可以將 SQL 語句轉換成 Go struct 的工具。

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

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

wechat

參考資料

[1]

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

[2]

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

[3]

結構化日誌討論: https://github.com/golang/go/discussions/54763

[4]

lipgloss 0.6 釋出: https://github.com/charmbracelet/lipgloss

[5]

Echo v4.9 釋出: https://github.com/labstack/echo/releases/tag/v4.8.0

[6]

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

[7]

scany 1.2 釋出: https://github.com/georgysavva/scany

[8]

FastHTTP 1.40 釋出: https://github.com/valyala/fasthttp

[9]

weaviate 1.15 釋出: https://github.com/semi-technologies/weaviate

[10]

一個執行緒安全的泛型支援map庫: https://colobu.com/2022/09/04/a-thread-safe-and-generic-supported-map/

[11]

與日俱進,在 Go 1.20 中這種高效轉換的方式又變了: https://colobu.com/2022/09/06/string-byte-convertion/

[12]

lane: https://github.com/oleiade/lane

[13]

fetch: https://github.com/go-zoox/fetch

[14]

goleak: https://github.com/uber-go/goleak

[15]

go-bench-viewer: https://nidorx.github.io/go-bench-viewer

[16]

GopherCon Europe 2022 視訊列表: https://www.youtube.com/playlist?list=PLtoVuM73AmsJjj5tnZ7BodjN_zIvpULSx

[17]

fan2go: https://github.com/markusressel/fan2go

[18]

sql2struct: https://github.com/idoubi/sql2struct

[19]

Go語言中文網: https://studygolang.com/go/weekly

[20]

微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91