1.

Go 言語のエラー一覧と対処法|コンパイルエラー・panic・go.mod

編集
この記事の要点
  • Go 言語で遭遇する典型的なエラーメッセージと対処法をまとめたカテゴリ
  • go.mod file not found はモジュール初期化漏れ。go mod init モジュール名 で解決
  • コンパイルエラーは Go が未使用の変数・import を許さない言語仕様に起因するものが多い
  • ランタイムの nil pointer dereference / index out of range は panic で停止、recover で捕捉可能
  • 個別のエラーは子記事を参照。まずは「go.mod file not found」から

Go のエラーの特徴

Go 言語は明示的なエラーハンドリングを重視する設計で、多くの関数が (結果, error) の 2 値を返します。例外機構(try-catch)を持たず、if err != nil でその場で処理するのが基本スタイルです。この明快さゆえ、エラーメッセージも比較的読みやすく、原因特定がしやすいのが特徴です。

エラーは大きく 3 つの層に分かれます。

性質
ツール / モジュールgo.mod file not foundgo コマンド実行時。環境・設定の問題
コンパイルdeclared and not used / undefined: Xビルド時。文法・型の問題
ランタイム(panic)nil pointer dereference / index out of range実行時。論理バグ

コンパイルエラーの典型

Go は厳格で、使われていない変数や import を残すとコンパイルエラーになります。これは「読みやすさ・保守性のため」という言語設計の方針です。

// declared and not used: x
func main() {
    x := 10   // 使われていない → コンパイルエラー
}

// imported and not used: "fmt"
import "fmt"  // 使われていない → コンパイルエラー

一時的に回避するには _ = x(ブランク識別子への代入)や、import を _ "package"(副作用 import)にする手があります。

ランタイム panic の典型

  • nil pointer dereference — nil のポインタ/インタフェース/マップにアクセス。マップは make で初期化を忘れがち
  • index out of range — スライス/配列の範囲外アクセス。len() で境界チェック
  • assignment to entry in nil mapvar m map[string]int だけで m["k"]=1 すると panic。m := make(map[string]int) が必要

panic は defer + recover() で捕捉できますが、Go の流儀では「想定内のエラーは error で返し、panic は本当に異常な場合のみ」が推奨です。

関連リンク

編集
Post Share
子ページ
  1. go: go.mod file not found in current directory or any parent directory
同階層のページ
  1. エラー一覧
  2. コマンド・ディレクティブ一覧

最近更新/作成されたページ