Go Wiki: 經驗報告

此頁面收集有關 Go 遇到的問題的經驗報告,以便為這些問題的解決方案設計提供參考。這些報告應側重於問題:不必側重於或無需提出解決方案。要提出解決方案,請參閱提案流程

我們希望透過這些經驗報告來了解人們在編寫 Go 時遇到的困難,以幫助我們確定 Go 生態系統的未來改進的優先順序。(我們不承諾回覆這些報告。如果您需要關於 Go 的即時幫助,請參閱https://golang.org.tw/help/獲取資源。)

最好的經驗報告應該說明:(1)您想做什麼,(2)您實際做了什麼,以及(3)為什麼這不好,並用真實的具體例子來說明,最好是生產環境中的例子。請寫下對您來說最重要的問題的報告,釋出在您自己的部落格、Medium 或作為GitHub Gist(使用 .md 擴充套件名錶示 Markdown),或作為公開可讀的 Google 文件,然後在此處連結它們。(訪談影片或幻燈片也受歡迎,儘管它們不太方便我們消化。)

如果您無權編輯 wiki 以將文章新增到此列表,請提交一個 issue

請保持頁面整體按部分(例如,“錯誤處理”在“日誌記錄”之前)字母順序排序。在一個部分內,請按時間順序排列文章。包含每篇文章要點的單句摘要會很有幫助。

根據需要新增新章節。

目錄

應用和遊戲開發

型別轉換

併發

Context

宣告

依賴

診斷和除錯

  • Kevin Burke,“我如何執行基準測試並列印結果”,如果不需要那麼多 Unix 粘合程式碼來執行和列印這些結果就好了。2017 年 7 月。

  • John Clarke,跟蹤間歇性故障(非競爭)透過執行非常緩慢的 {命中測試失敗,增加日誌記錄} 迴圈,透過連續執行“do { go test -race } while ( $LASTEXITCODE -eq 0 )}”過夜。持續許多個晚上。像https://rr-project.org/這樣的執行跟蹤功能將具有變革性。2018 年 11 月。

  • guanwcmd/trace 和 PySnooper。比較 cmd/trace 和一個(更簡潔的)Python 跟蹤 API。2019 年 5 月。

文件

教育和教學

  • Carl Kingsford 和 Phillip Compeau,“Go 2.0 用於教學”。在入門級程式設計課程中使用 Go 的經驗。

錯誤處理

(本節是關於編寫 if err != nil。)

錯誤值

(本節是關於除了 Error() string 方法之外的其他錯誤語義。)

檔案系統

泛型

GoMobile

  • Vijay,“[在 gomobile 中不支援巢狀結構體和切片]”

不變性

程序間通訊

大規模軟體開發

字面量

日誌記錄

雜項 / 多項

模組

效能

  • Kevin Burke,“真實生活中的 Go 基準測試”,試圖向普通開發人員解釋如何使用 pprof 等工具,也許這可以更簡單。2016 年 7 月。
  • Nathan Kerr,“併發更慢?”,展示瞭如何使用 Go 的測試、基準測試和效能分析工具來提高函式併發實現的效能。2017 年 4 月。

移植

  • Shannon Pekary,“為什麼選擇 GOPP”,試圖建立一個“class”關鍵字,它只是將一個 struct 也變成一個 interface,從而使從面嚮物件語言移植程式碼更加容易。

切片

語法

時間

工具鏈

  • Jonathan Ingram,“gofmt 不夠武斷”,2017 年 8 月,關於開發人員之間關於程式碼風格的持續爭論,因為 gofmt 不夠武斷。
  • Jean-Laurent de Morlhon,“為什麼 Maurice 千萬不要用 GO 編碼”,從 Java 開發者的角度談論 Go(“go dep”不夠……),幻燈片為英文。

型別系統

型別化的 nil

Vendoring(供應商化)


此內容是 Go Wiki 的一部分。