Go Wiki:如何尋求協助
此頁面提供一些提示,說明如何在各種 Go 支援論壇 中成功尋求協助。
在提出問題之前
在尋求協助之前,請檢查您是否已解決以下常見問題
務必檢查所有錯誤
務必檢查所有錯誤。通常會看到與 nil 恐慌相關的問題報告,原因在於類似下列的程式碼
result, err := somefunction()
if err != nil {
log.Println("oops an error happened", err)
// return is missing here
}
// the code then continues to use result which is invalid.
或
result, _ := somefunction()
// code uses result which might be invalid
在尋求協助之前,您應該確保程式碼正確處理所有錯誤狀況。
延伸讀物
檢查程式碼是否沒有資料競爭
意外的執行時期恐慌通常是由於程式中的資料競爭所造成。如果您的程式包含資料競爭,您需要在尋求協助之前解決競爭。
如果您的程式有良好的測試涵蓋率,您可以透過將 -race
旗標新增到 go test
呼叫來測試競爭。
如果您的程式沒有良好的測試涵蓋率,或只有在執行程式時才會發生崩潰,您可以透過將 -race
傳遞給 go build
或 go install
呼叫來建立一個啟用競爭的程式版本。
具有資料競爭的 Go 程式行為未定義。Go 程式中沒有安全的資料競爭。
延伸讀物
提出問題
獲得協助的最佳方式是展示
- 您所執行的動作,理想情況下是一個小型、完整、獨立的範例。如果您執行了一個指令,請顯示您執行的指令。如果您的程式失敗,請提供失敗程式的原始碼。如果程式太大,或您無法分享原始碼,請提供一個獨立、可執行且能展示問題的範例。
- 您預期會發生的情況。如果您預期指令會成功完成,請這麼說。如果您預期程式會產生特定輸出,請提供您預期的輸出的範例。
- 實際發生的事。如果指令失敗,請包含失敗的完整輸出,而不要只包含你認為是原因的單一行。如果程式未產生預期的輸出,請包含它輸出的內容。
其他提示
- 如果你要張貼指令的輸出,請貼上文字,而不是文字的螢幕截圖。如果它實際上是圖片,那沒關係。
- 如果你要張貼大量的輸出,你可以考慮使用貼上服務或 gist 服務。
- 在張貼程式碼範例時,請使用 Go Playground(除非在你的國家/地區不可用)。
此內容是 Go Wiki 的一部分。