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 buildgo install 呼叫來建立一個啟用競爭的程式版本。

具有資料競爭的 Go 程式行為未定義。Go 程式中沒有安全的資料競爭。

延伸讀物

提出問題

獲得協助的最佳方式是展示

  1. 您所執行的動作,理想情況下是一個小型、完整、獨立的範例。如果您執行了一個指令,請顯示您執行的指令。如果您的程式失敗,請提供失敗程式的原始碼。如果程式太大,或您無法分享原始碼,請提供一個獨立、可執行且能展示問題的範例。
  2. 您預期會發生的情況。如果您預期指令會成功完成,請這麼說。如果您預期程式會產生特定輸出,請提供您預期的輸出的範例。
  3. 實際發生的事。如果指令失敗,請包含失敗的完整輸出,而不要只包含你認為是原因的單一行。如果程式未產生預期的輸出,請包含它輸出的內容。

其他提示


此內容是 Go Wiki 的一部分。