Go Wiki: ヘルプの求め方
このページでは、さまざまなGo サポート フォーラムでヘルプをうまく求めるためのヒントをいくつか紹介します。
質問する前に
ヘルプを求める前に、以下の一般的な問題に対処したことを確認してください。
常にすべてのエラーを確認する
常にすべてのエラーを確認してください。次のようなコードによる nil panic に関連する問題が報告されることがよくあります。
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
ヘルプを求める前に、コードがすべてのエラー条件を正しく処理していることを明確にする必要があります。
さらに読む
コードにデータ競合がないことを確認する
予期しないランタイム パニックは、プログラム内のデータ競合が原因で発生することがよくあります。プログラムにデータ競合がある場合は、ヘルプを求める前にその競合に対処する必要があります。
プログラムが十分なテスト カバレッジを持っている場合は、go test 呼び出しに -race フラグを追加することで競合をテストできます。
プログラムが十分なテスト カバレッジを持っていない場合、またはクラッシュがプログラムの実行中にのみ発生する場合は、go build または go install 呼び出しに -race を渡すことで、競合検出機能が有効なバージョンのプログラムをビルドできます。
データ競合がある Go プログラムの動作は未定義です。Go プログラムには安全なデータ競合はありません。
さらに読む
質問する
ヘルプを得るための最善の方法は、次のことを示すことです。
- 何をしたのか、理想的には小さく、完全で、スタンドアロンな例を添えて。 コマンドを実行した場合は、実行したコマンドを示してください。プログラムが失敗した場合は、失敗したプログラムのソースを提供してください。プログラムが大きすぎる場合、またはソースを共有できない場合は、代わりに問題を実証する、自己完結型の実行可能な例を提供してください。
- 何が起こると予想したか。 コマンドが正常に完了すると予想した場合は、その旨を述べてください。プログラムが特定の出力を生成すると予想した場合は、予想した出力の例を示してください。
- 代わりに何が起こったか。 コマンドが失敗した場合は、原因だと思った単一行だけでなく、失敗の完全な出力を含めてください。プログラムが予想された出力を生成しなかった場合は、実際に出力されたものを含めてください。
追加のヒント
- コマンドの出力を投稿する場合は、テキストのスクリーンショットではなく、テキストを貼り付けてください。実際に画像である場合は、それで問題ありません。
- 大量の出力を投稿する場合は、pastebin または gist サービスの使用を検討してください。
- コード サンプルを投稿する際は、Go Playground を使用してください(お住まいの国で利用できない場合を除く)。
このコンテンツはGo Wikiの一部です。