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