language
Go
Google が開発した静的型付けのコンパイル言語。並行処理とシンプルな構文、シングルバイナリ出力を特徴とする。
問題一覧(12)
Go で「declared and not used」エラーが解決できない
Go は宣言したローカル変数を一度も使わないとコンパイルエラーになる。使わない変数は削除するか、ブランク識別子 _ に代入して明示的に破棄する。import も同じ規則で未使用は許されない。
更新: 2026-08-04、タグ: compile-error、unused-variable、declared-and-not-used
Go の goroutine がリークして終了しない
受信側 goroutine が読み続けるべき channel を送信側が close せず、受信側が永久にブロックする状態が goroutine リーク。context で停止信号を渡すか、送信終了側で close(ch) を呼んで for-range を抜けさせる。
更新: 2026-06-04、タグ: goroutine、leak、channel
Go で「import cycle not allowed」が解決できない
Go はパッケージ同士が直接・間接に循環参照することを禁止している。共通部分を第3のパッケージへ切り出すか、依存の向きをインターフェースで逆転させて循環を断ち切る。
更新: 2026-08-10、タグ: import、package、cycle
go install したコマンドが「command not found」で実行できない
go install はバイナリを GOBIN(既定は $GOPATH/bin か $HOME/go/bin)に置く。その場所が PATH に無いと実行できないため、インストール先を確認して PATH に追加すれば解決する。
更新: 2026-06-16、タグ: go-install、path、gobin
Go で「go.mod file not found in current directory」が解決できない
go.mod が無いディレクトリで go run / go build を実行すると出るエラー。go mod init <module> でモジュールを初期化するか、go.mod のあるディレクトリへ移動すれば解決する。
更新: 2026-07-28、タグ: go-mod、module、command
Go の go.mod の replace でローカルモジュールが参照できない
replace の右辺がローカルパスのとき、参照先に go.mod が無い・バージョンを書いてしまう・相対パスの基準がズレる、のいずれかで効かないことが多い。go.mod を用意し、ローカル参照ではバージョンを省くと解決する。
更新: 2026-07-20、タグ: go-mod、modules、replace
go mod tidy が失敗する(unknown revision / missing go.sum entry)
go mod tidy が unknown revision・missing go.sum entry・410 Gone などで止まる場合、原因はモジュールキャッシュ・GOPROXY・private module の認証のいずれかであることが多い。
更新: 2026-07-18、タグ: go-mod、modules、goproxy
Go で cannot find module providing package エラーが解消できない
go build / go run で cannot find module providing package が出る場合、go.mod 未登録、GOPROXY / GOPRIVATE の設定漏れ、ローカル参照の replace 未指定、import パスのタイポが主原因。まず go mod tidy を流し、それでも消えなければ環境変数とパスを順に疑う。
更新: 2026-08-03、タグ: modules、go-mod、import
Go で「invalid memory address or nil pointer dereference」が解決できない
Go の runtime error: invalid memory address or nil pointer dereference は、nil のポインタやインタフェースに対してフィールドアクセス・メソッド呼び出しを行ったときに発生します。代入直前に nil チェックを入れ、関数の戻り値で error を先に確認するのが基本対処です。
更新: 2026-06-04、タグ: nil、pointer、panic
Go の for range でループ変数のキャプチャができない(goroutine が同じ値を見る)
Go 1.21 以前は for range のループ変数が全反復で共有されるため、goroutine やクロージャ内で参照すると最終値だけを見てしまう。Go 1.22 以降は各反復で新しい変数になる仕様。古い環境では明示的にローカル変数へ写す。
更新: 2026-06-05、タグ: for-range、goroutine、closure
Go の go run でパッケージが実行できない(package is not a main package)
go run は package main で func main() を持つパッケージしか実行できない。ライブラリ側のディレクトリを指定したり、package foo のままだとこのエラーになる。
更新: 2026-06-02、タグ: run、package、main
Go の go test がキャッシュで再実行されない
コード未変更で go test を再実行すると (cached) と表示されてテストが走らない場合、-count=1 を付けるか go clean -testcache でキャッシュを破棄する。
更新: 2026-06-02、タグ: test、cache、count
サンプルコード
エラーの解決ではなく「○○するには」の基本形を探しているときは、Go のサンプルコード一覧(15件)を参照するとよい。