| この記事の要点 |
|
Go のエラーの特徴
Go 言語は明示的なエラーハンドリングを重視する設計で、多くの関数が (結果, error) の 2 値を返します。例外機構(try-catch)を持たず、if err != nil でその場で処理するのが基本スタイルです。この明快さゆえ、エラーメッセージも比較的読みやすく、原因特定がしやすいのが特徴です。
エラーは大きく 3 つの層に分かれます。
| 層 | 例 | 性質 |
|---|---|---|
| ツール / モジュール | go.mod file not found | go コマンド実行時。環境・設定の問題 |
| コンパイル | 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 map —
var m map[string]intだけでm["k"]=1すると panic。m := make(map[string]int)が必要
panic は defer + recover() で捕捉できますが、Go の流儀では「想定内のエラーは error で返し、panic は本当に異常な場合のみ」が推奨です。
関連リンク
同階層のページ
- エラー一覧
- コマンド・ディレクティブ一覧
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09