declared and not used: の原因と直し方
Goでは変数を宣言しても一度も使わないとコンパイルエラーになります。デバッグ用に一時的に変数を減らした際など、使い忘れの変数が残っていると発生します。
エラーメッセージの読み方
./main.go:6:5: declared and not used: count
./main.go- ファイル名
6- 行番号
5- 列番号
declared and not used: count- 詳細メッセージ — 何が問題だったか
このエラーが出る典型パターン
パターン1
1 package main 2 3 import "fmt" 4 5 func main() { 6 count := 5 7 ^ 8 fmt.Println("done") 9 }
./main.go:6:5: declared and not used: count
countを宣言しても一度も使っていません。使わない変数は_に代入するか、削除する必要があります。
直し方: (空) を _ = count にします。
広告
広告スロット(未設定)
パターン2
1 package main 2 3 import "fmt" 4 5 func main() { 6 total := 100 7 ^ 8 fmt.Println("done") 9 }
./main.go:6:5: declared and not used: total
未使用の変数はGoコンパイラがエラーとして検出します。_に代入すれば意図的に捨てたことを表現できます。
直し方: (空) を _ = total にします。
パターン3
1 package main 2 3 import "fmt" 4 5 func main() { 6 name := "go" 7 score := 10 8 ^ 9 fmt.Println(name) 10 }
./main.go:7:5: declared and not used: score
nameは使われていますがscoreは使われていません。使う変数と使わない変数が混在していても、未使用のものはエラーになります。
直し方: (空) を _ = score にします。
パターン4
1 package main 2 3 import "fmt" 4 5 func main() { 6 x := 1 7 y := 2 8 ^ 9 fmt.Println(y) 10 }
./main.go:6:5: declared and not used: x
xは宣言だけで使われていません。fmt.Println(x)のように使うか、_に代入する必要があります。
直し方: (空) を _ = x にします。
パターン5
1 package main 2 3 import "fmt" 4 5 func main() { 6 value := 42 7 ^ 8 fmt.Println("result") 9 }
./main.go:6:5: declared and not used: value
valueを宣言した後、一度もその変数を参照していないためコンパイルエラーになります。
直し方: (空) を _ = value にします。
よくある誤解
「使わない変数は警告止まりで、コンパイルは通るはず」という思い込みは誤りです。Goはコンパイラの標準機能として未使用変数を検出し、警告ではなくエラーとして扱います。
まとめ
declared and not used:は初級でつまずきやすい項目です。上の5パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。