Go語言愛好者周刊:第 62 期—今天的題很細節

2020-10-03 Go語言中文網

這裡記錄每周值得分享的 Go 語言相關內容,周日發布。

本周刊開源(GitHubpolaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2]

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

題圖:TamaGo,一個 TinyGo ARM 替代品

刊首語

Go101 作者發布了一道有意思的題目,這道題主要考察細節點,Go101 這本書也是以摳細節著稱。看看這道題,以下程序輸出什麼?(單選)

package mainconst s = "Go101.org"// len(s) == 9// 1 << 9 == 512// 512 / 128 == 4var a byte = 1 << len(s) / 128var b byte = 1 << len(s[:]) / 128func main() {  println(a, b)}

這裡涉及到兩個知識點,在 Go 語言規範中都有明確的說明,但確實很細節。你答對了嗎?原因知曉嗎?

資訊

1、Go 對靜態資源的內嵌支持的提案被接受,在 Go1.16 實現[3]

提案在這裡:https://github.com/golang/proposal/blob/master/design/draft-embed.md。

2、pkg.go.dev 計劃重新設計[4]

之前寫文章分析過,現有的設計確實。。。期待重新設計能夠更好。

3、TinyGo 對 ESP32 和 ESP8266 的初始支持[5]

你可能已經聽說過,上周我們在 0.15 版本的 TinyGo 中添加了 ESP32 和 ESP8266 支持。如果你熟悉微控制器,這將是令人振奮的消息,因為這些 ESP 設備既便宜又受歡迎。但是,這只是一個初始埠,在你可以利用 WiFi 和藍牙等所有功能之前,還有很多工作要做。

4、Caddy 2.2.0 發布[6]

支持 ZeroSSL[7] 和 HTTP/2 server push。

5、twirp 7.1 發布[8]

具有 Protobuf 服務定義的簡單 RPC 框架。

6、Go 1.16 go module 機制默認開啟[9]

官方還是很謹慎。沒有使用 module 真的說不過去了。

7、k6 v0.28.0 發布[10]

k6 是一種現代的開源性能和負載測試工具,用 Go 編寫並且可以用 JavaScript 編寫腳本。

文章

1、Go:跨團隊協作時如何共享對象

對象怎麼可以共享呢?

2、Go Playground 還能這麼玩?

多人協同編輯。

3、unsafe 真就 unsafe 嗎?

知道自己在幹什麼還是可以使用的。

4、你必須了解的 Go 歷史:幫助理解 Go 的設計思想和每個版本的優勢或弱點

回顧 Go 版本的發展歷史。

5、2 分鐘定製一個高大上的 GitHub 首頁

GitHub 這個功能出來有一段時間了,GitHub 粉應該定製下。

6、手撕 hashicorp/raft 算法【萬字長文】

本文是第 104 期手撕 hashicrop/raft 算法的文字版,建議搭配著視頻(本文文末)一起閱讀。

7、原來 9 張圖就可以弄懂 Go 內存管理

從高層看內存管理的文章,而不拘於很多細節。

8、Go 程序性能分析[11]

性能分析是排查內存洩露等問題的常見手段,可以讓我們了解和捕獲到程序堆內存和 Profile 信息,方便定位問題。Go 原生提供了豐富的分析工具,下面是通過幾個內存洩露的案例對 Go 程序做性能分析,並介紹相關工具原理和細節。

開源項目

1、tamago[12]

適用於 ARM SoC 的 Bare Metal Go。該框架可在裸機 ARM System-on-Chip(SoC)設置(包括到目前為止的 Raspberry Pi 2 和 Zero)上啟用 Go 應用的編譯和執行。可能是更成熟的 TinyGo[13] 的唯一 ARM 替代品,因為 TamaGo 修改了標準 Go 發行版,而 TinyGo 是基於 LLVM 的獨特編譯器。

2、go-diagrams[14]

使用 Go 創建漂亮的系統圖。

3、mouthful[15]

Disqus 評論系統的自助託管 Go 替代方案。為你的網站添加評論。

4、twtxt[16]

Go 實現的去中心化類 Twitter的微博客平臺。

5、prisma-client-go[17]

Prisma Client Go 是一個自動生成且完全類型安全的資料庫客戶端。

6、overseer[18]

用於創建可監控、支持優雅重啟和自升級的 Go 應用的 module。

7、gin-metrics[19]

為 prometheus 準備的度量指標,針對 Gin 框架。

8、gomponents[20]

Go 中的聲明性視圖組件,可以渲染為 HTML。這裡有一篇介紹的文章:https://www.maragu.dk/blog/gomponents-declarative-view-components-in-go/。

資源&&工具

1、goconst[21]

在 Go 中查找可以被常量替換的重複字符串。

2、logo-ls[22]

現代 ls 命令與 VS Code 一樣的文件"圖標"和 Git 集成。

3、siegfried[23]

基於籤名的文件格式識別。

4、Dbmate[24]

輕量級,與框架無關的資料庫遷移工具。用 Go 語言編寫,但可以與以任何語言編寫的使用資料庫的應用程式一起使用。支持 MySQL,Postgres,SQLite 和 ClickHouse。

5、msfs2020-go[25]

使用 golang 連接到 Microsoft Flight Simulator 2020。

6、程式設計師的數學[26](英文)

免費電子書,專為程式設計師準備。

7、pixelvideo[27]

如何使用 2D 遊戲庫製作視頻的簡單示例。


參考資料

[1]

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

[2]

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

[3]

Go 對靜態資源的內嵌支持的提案被接受,在 Go1.16 實現: https://github.com/golang/go/issues/41191#issuecomment-697710797

[4]

pkg.go.dev 計劃重新設計: https://github.com/golang/go/issues/41585

[5]

TinyGo 對 ESP32 和 ESP8266 的初始支持: https://aykevl.nl/2020/09/tinygo-esp32

[6]

Caddy 2.2.0 發布: https://github.com/caddyserver/caddy/releases/tag/v2.2.0

[7]

ZeroSSL: https://zerossl.com/features/acme/

[8]

twirp 7.1 發布: https://github.com/twitchtv/twirp

[9]

Go 1.16 go module 機制默認開啟: https://go-review.googlesource.com/c/go/+/255052

[10]

k6 v0.28.0 發布: https://github.com/loadimpact/k6/releases/tag/v0.28.0

[11]

Go 程序性能分析: https://segmentfault.com/a/1190000024541490

[12]

tamago: https://github.com/f-secure-foundry/tamago

[13]

TinyGo: https://tinygo.org/

[14]

go-diagrams: https://github.com/blushft/go-diagrams

[15]

mouthful: https://github.com/vkuznecovas/mouthful

[16]

twtxt: https://github.com/jointwt/twtxt

[17]

prisma-client-go: https://github.com/prisma/prisma-client-go

[18]

overseer: https://github.com/jpillora/overseer

[19]

gin-metrics: https://github.com/penglongli/gin-metrics

[20]

gomponents: https://github.com/maragudk/gomponents

[21]

goconst: https://github.com/jgautheron/goconst

[22]

logo-ls: https://github.com/Yash-Handa/logo-ls

[23]

siegfried: https://github.com/richardlehane/siegfried

[24]

Dbmate: https://github.com/amacneil/dbmate

[25]

msfs2020-go: https://github.com/lian/msfs2020-go

[26]

程式設計師的數學: https://yurichev.com/writings/Math-for-programmers.pdf

[27]

pixelvideo: https://github.com/markustenghamn/pixelvideo

[28]

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

[29]

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

相關焦點

  • Go語言愛好者周刊:第 68 期—一道關於浮點數的題
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。;7 01:21 victoria-metrics-go-tip這期看一道關於 IEEE-754 浮點數的題,以下代碼輸出什麼?
  • Go語言愛好者周刊:第 66 期—一道關於 fmt 的題
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。今天這道題,你看看輸出啥?
  • Go語言愛好者周刊:第 58 期—關於 context
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。
  • Go愛好者周刊:第 67期—Go1.16相關功能基本完成了
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。6、這個調查顯示 Go 竟然是 2020 年最受歡迎的程式語言今天看到一個 2020 年開發者調查報告,看到了 Go 的前景,忍不住想跟大家分享一下。7、AI 和 數據科學領域,Go 語言可能很快會取代 Python。最後的原因有點迷真的很迷。8、面試題:這道 reslice 的題 簡單,但原理你知曉嗎?
  • Go愛好者周刊:第 61 期—Go開發的 2048 遊戲
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(github:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。
  • Go愛好者周刊:第 64 期—goup這個工具了解下
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。
  • Go愛好者周刊:第 59 期Go1.16預計支持內嵌靜態資源
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue 。鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。
  • 科技愛好者周刊:第 90 期
    周刊討論區的帖子《誰在招人?》[2],提供大量就業信息,歡迎訪問或發布工作/實習崗位。雖然只是小數點後第7位不一樣,但是對於土地測量來說,會導致很大的誤差。1959年,美國決定採用國際英尺,但這不是強制規定,有40個州直到今天還在使用美國英尺,其他州則使用國際英尺。比如,俄勒岡州和華盛頓州就不一樣,連接兩州的橋梁施工,不得不考慮這種差異。2019年10月,美國政府宣布,2022年徹底結束美國英尺的使用,所有州都一律使用國際英尺。
  • 科技愛好者周刊:第 101 期
    周刊討論區的帖子《誰在招人?》[2],提供大量就業信息,歡迎訪問或發布工作/實習崗位。3、RSA 的原理與實現[17](中文)本文用簡單的語言和數學推導,介紹了公鑰加密 RSA 的原理。Chrome 瀏覽器打算凍結這個欄位,本文介紹新方案的細節。7、GitHub 的官方 RSS Feed[22]GitHub 官方有提供 RSS Feed,但沒寫在文檔裡面,這篇文章給出了地址。
  • 科技愛好者周刊(第 128 期):這個社會是否正在變成「賽博朋克」?
    我有時覺得,這個周刊就是站在底層的視角,觀察這個高科技社會,試圖有所作為,所以也許可以改名叫做《賽博朋克周刊》。Vue 進階攻略上個月,Vue 正式發布了醞釀已久的3.0版。Vue 在國內前端市場佔據了超大的份額,關注這件事的人很多。我估計,前端面試時,對 Vue 考察很快也會跟著升級到 3.0 版。
  • go語言面試題以及解答(三)
    第一個go func中i是外部for的一個變量,地址不變化。遍歷完成後,最終i=10。 故go func執行時,i的值始終是10。第二個go func中i是函數參數,與外部for中的i完全是兩個變量。 尾部(i)將發生值拷貝,go func內部指向值拷貝地址。4 下面代碼會輸出什麼?
  • 科技愛好者周刊(第 116 期):世界的未來是一個火藥桶
    周刊討論區的帖子《誰在招人?》[2],提供大量就業信息,歡迎訪問或發布工作/實習崗位。刊首圖7月12日凌晨,哈爾濱醫生、天文攝影愛好者姜雪鵬拍到了 C/2020F3 彗星。開課吧為周刊讀者提供了一份詳細的 《數據分析知識速查表》,使用高清圖表的形式,列出上面四種技能的學習路徑、詳細知識點和知識脈絡,便於理解和融會貫通。同時,還會贈送數字版的《數據科學技能樹》海報,適合列印出來張貼。
  • go語言137道面試題整理匯總
    1、go的調度2、go struct能不能比較go語言中文文檔:www.topgoer.com因為是強類型語言,所以不同類型的結構不能作比較,但是同一類型的實例值是可以比較的,實例不可以比較,因為是指針類型3、go defer(for defer),先進後出,後進先出
  • 研發周報第10期:如何創建比C語言更快的程式語言?
    你知道如何創建比C語言更快的程式語言嗎?開發者創建新一門語言通常以C語言為參照對象,將語言編譯時間與C語言進行對比,會因比C語言慢多少而引以自傲。然而,很少有語言能夠擊敗C。那麼,什麼樣的語言才能比C更快呢?
  • 《三聯生活周刊》 第1000期,2018年8月20日出版
    《三聯生活周刊》 第1000期,2018年8月20日出版 【封面故事】與時代同行
  • 科技愛好者周刊(第 130 期):低齡化的網際網路
    周刊討論區的帖子《誰在招人?》[2],提供大量就業信息,歡迎訪問或發布工作/實習崗位。大廠面試必考-算法與數據結構這部分重點講述如何進行算法的分類學習,提到的所有數據結構和算法類別都是大廠面試題中出現頻率最高的。03. 熱門知識點鞏固-實戰這部分重點講解目前最熱門的 TypeScript 語言,如何在項目裡用上 TS?如何保證代碼的兼容性,以及如何進行調試。
  • 這麼一道「簡單」的題,為什麼結果出乎我的意料
    今天在《Go語言愛好者周刊:第62期》中貼了一道 Go101 的題,原題如下:package mainconst s = "Go101.org"// len(s) == 9// 1 << 9 == 512// 
  • Go 語言打包靜態文件和與Gin一起使用Go-bindata
    系列文章目錄第一章 Go 語言打包靜態文件以及如何與Gin一起使用Go-bindata文章目錄系列文章目錄前言一、go-bindata是什麼?日常開發總結題外參考前言前幾天,開始學習用 Go 語言開發一個內部項目來幫助解決測試環境中的一些不便利的問題。
  • IPFS周報第103期:IPFS聯手以太坊構建核心數據
    歡迎來到IPFS第103期官方周刊!以下是最近有關星際文件系統發生的要事! Peergos贏得歐盟下一代網際網路資助許多人祝賀Peergos的人們,他們最近獲得了20萬歐元的贈款,由下一代網際網路計劃開放網際網路改造(NGI-POINTER)。
  • Go語言的魅力
    給周末無事,想充電的朋友分享一下我最近迷戀上了Go語言的理由[偷笑],起初讓我了解它,是它那幾位殿堂級的創始人,後來去年B站原始碼洩露,幾乎整站全是go語言架構,讓我映像深刻,而近年國內很多巨頭阿里,頭條,小米,360,美團,螞蟻,騰訊等的開源項目可見,go就是一門未來具有絕對魅力的語言,我很多朋友公司裡,無歷史包袱的新項目都在優先考慮golang架構。