go.dev/dl からGoをダウンロードし、お使いのシステム用のインストーラーを実行して、新しいターミナルを開き、go version を実行します。WindowsとmacOSならインストールはこれで終わりです。Linuxではtarballを展開し、ディレクトリを1つ PATH に追加します。以下ではシステムごとの手順を説明し、その後に確認方法と実際によく出会うエラーを取り上げます。
試すだけならGoをインストールする必要はありません。このプログラムはブラウザ上で、このサイトが使っているのと同じGoのリリースで動き、実行環境の情報を表示します。
手元にGoをインストールしたら、同じプログラムが自分のマシンの情報を表示します。
どのファイルをダウンロードするか
ダウンロードページには、OSとCPUアーキテクチャごとに1つずつファイルが並んでいます。
| システム | ファイル | 備考 |
|---|---|---|
| Windows(大半のPC) | go1.24.5.windows-amd64.msi | amd64 は64ビットのIntelまたはAMD |
| ARM版Windows | go1.24.5.windows-arm64.msi | Surface Pro X、Snapdragon搭載ノートPC |
| macOS、Appleシリコン(M1以降) | go1.24.5.darwin-arm64.pkg | darwin はmacOSのこと |
| macOS、Intel | go1.24.5.darwin-amd64.pkg | |
| Linux(大半のサーバーとPC) | go1.24.5.linux-amd64.tar.gz | |
| ARM版Linux | go1.24.5.linux-arm64.tar.gz | 64ビットOSのRaspberry Pi 4と5、AWS Graviton |
この例のバージョン番号は1.24.5です。その時点で最新の安定版を選んでください。手順はバージョンが変わっても同じです。
WindowsにGoをインストールする
.msiファイルをダウンロードして実行します。- デフォルトのまま進めます。Goは
C:\Program Files\Goにインストールされ、インストーラーがC:\Program Files\Go\binをPATHに追加します。 - 開いているコマンドプロンプトやPowerShellのウィンドウをすべて閉じ、新しく開きます。インストール中に開いていたターミナルは古い
PATHのままです。 - インストールを確認します。
go version
go version go1.24.5 windows/amd64
パッケージマネージャーを使いたい場合は winget でも入ります。
winget install GoLang.Go
macOSにGoをインストールする
公式パッケージを使う
お使いのチップに合った .pkg をダウンロードして開きます。Goは /usr/local/go にインストールされ、/etc/paths.d/go というファイルを通じて /usr/local/go/bin が PATH に追加されます。新しいターミナルウィンドウを開いてから実行します。
go version
go version go1.24.5 darwin/arm64
Homebrewを使う
brew install go
go version
HomebrewはGoを独自のプレフィックス(Appleシリコンでは /opt/homebrew)の下に置き、すでに PATH に入っているディレクトリに go をリンクします。あとで更新するときは brew upgrade go を使います。
方法はどちらか1つにしてください。.pkg とHomebrewの両方でインストールすると PATH 上に go バイナリが2つでき、先に見つかったほうが使われます。シェルがどちらを使っているかは which go でわかります。
Linux・UbuntuにGoをインストールする
公式の方法はどのディストリビューションでも使えます。まず以前のインストールを削除してください。古いツリーの上に展開すると2つのバージョンのファイルが混ざり、ツールチェーンが壊れます。
cd ~/Downloads
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz
次にGoを PATH に追加します。この行を ~/.profile(bash)または ~/.zshrc(zsh)の末尾に追記します。
export PATH=$PATH:/usr/local/go/bin
現在のシェルに読み込んで確認します。
source ~/.profile
go version
go version go1.24.5 linux/amd64
Ubuntuのパッケージ:aptとsnap
Ubuntuには2つの近道があり、それぞれトレードオフが異なります。
# Distribution package: easy, but usually several releases old
sudo apt install golang-go
# Snap: tracks current Go releases
sudo snap install go --classic
aptのバージョンは見た目以上に重要です。モジュールは go.mod で最低限必要なGoのバージョンを宣言します。Go 1.21以降では、go 1.23 と書かれたモジュールは、Goが新しいツールチェーンをダウンロードできない限り古いツールチェーンではビルドされません。1.21より古いツールチェーンはとにかくビルドを試み、最初に出会った新しい機能のところで失敗します(後述の「Goを最新に保つ」を参照)。aptでインストールした場合は、go version を実行してgo.dev/dlと比べてください。
インストールを確認する
次の3つのコマンドで、正しくセットアップできたかを確認できます。
go version
go env GOROOT GOPATH
which go
go version go1.24.5 linux/amd64
/usr/local/go
/home/ana/go
/usr/local/go/bin/go
GOROOTはGo本体のインストール先です。自分のコードをここに置いてはいけませんし、設定する必要もないはずです。GOPATHのデフォルトは$HOME/go(Windowsでは%USERPROFILE%\go)です。Goはダウンロードしたモジュールを$GOPATH/pkg/modに保存し、go installでビルドしたプログラムを$GOPATH/binに置きます。which go(Windowsではwhere go)は、シェルが実行するバイナリそのものを表示します。go versionが予想外のバージョンを表示したときはこれを使ってください。
最初のプログラムを実行する
コードはどのディレクトリに置いても構いません。フォルダを作り、モジュールを初期化して、ファイルを書きます。
mkdir hello
cd hello
go mod init example.com/hello
go: creating new go.mod: module example.com/hello
これをそのフォルダに main.go として保存します。
そして実行します。
go run .
Go is installed and working.
go run . はカレントディレクトリのパッケージをコンパイルして実行します。プログラムの各行はHello Worldのページで説明しており、go mod init の手順はGoモジュールのページで扱っています。
GOPATH/binをPATHに追加する
go install でインストールしたツールは $HOME/go/bin に入りますが、このディレクトリはデフォルトでは PATH にありません。ツールをインストールしたのにシェルが見つけられない場合は、このディレクトリも追加します。
go install golang.org/x/tools/cmd/goimports@latest
export PATH=$PATH:$(go env GOPATH)/bin
goimports -h
新しいターミナルでも有効になるよう、export の行を ~/.profile か ~/.zshrc に書いておきます。Windowsでは、インストーラーがすでに %USERPROFILE%\go\bin をユーザーの PATH に追加しています。
Goを最新に保つ
アップグレードするには、古いリリースを入れたときと同じ方法で新しいリリースをインストールします。Linuxなら rm -rf /usr/local/go と tar の手順を繰り返すことになります。削除の手順は省かないでください。
Go 1.21からは、go コマンドが必要に応じて新しいツールチェーンを取得することもできます。モジュールの go.mod に go 1.24 と書かれていて、インストールされているのがGo 1.22の場合、GOTOOLCHAIN がデフォルトの auto のままなら、go build はGo 1.24をモジュールキャッシュにダウンロードしてそれを使います。インストール済みのGoはそのままで、そのモジュールだけが新しいリリースでビルドされます。
テスト用に古いバージョンも残しておきたい場合は、並べてインストールします。
go install golang.org/dl/go1.23.4@latest
go1.23.4 download
go1.23.4 version
よくあるインストールエラー
go: command not found や zsh: command not found: go。 シェルがバイナリを見つけられていません。Linuxでは、シェルが実際に読むファイル(zshなら ~/.zshrc、bashなら ~/.profile か ~/.bashrc)の export PATH の行に /usr/local/go/bin が入っているか確認し、新しいターミナルを開きます。echo $PATH でシェルが持っている値を確認できます。
'go' is not recognized as an internal or external command(Windows)。 ターミナルを閉じて開き直します。それでも出る場合は「システム環境変数の編集」を開いて「環境変数」をクリックし、Path に C:\Program Files\Go\bin が入っているか確認します。VS Codeの組み込みターミナルはVS Code起動時の環境を引き継ぐので、VS Codeも再起動してください。
アップグレード後も go version が古いバージョンを表示する。 PATH 上に2つのインストールがあります。which -a go(Windowsでは where go)を実行し、不要なほうを削除します。よくあるのは、/usr/bin/go にあるaptのパッケージが /usr/local/go/bin/go より先に見つかっているケースです。
go: go.mod file not found in current directory or any parent directory。 Goは正しくインストールされています。モジュールの外で go build や go run . を実行しただけです。先にプロジェクトのフォルダで go mod init example.com/yourname を実行してください。
Linuxでアップグレードした後、標準ライブラリで奇妙なコンパイルエラーが出る。 新しいtarballが古いツリーの上に展開されています。/usr/local/go を完全に削除してから展開し直します。
展開時にPermission deniedになる。 /usr/local の所有者はrootなので、rm と tar のコマンドには sudo が必要です。自分のコードで sudo が必要になることはありません。
エディタの設定
どのエディタでも使えますが、補完、エラーのハイライト、保存時の整形が使えるようにGoのサポートを入れておきましょう。VS Codeでは公式のGo拡張機能(GoogleのGoチームが公開)をインストールします。初めて .go ファイルを開いたときに、Goの言語サーバーである gopls のインストールを提案してくれます。JetBrainsのGoLandが主な商用の選択肢です。VimやNeovimはLSPクライアント経由で gopls を使います。
よくある質問
Golangはどうやってインストールしますか?
go.dev/dl からお使いのシステム用のインストーラーをダウンロードします。Windowsでは .msi を、macOSでは .pkg を実行し(または brew install go)、Linuxではtarballを /usr/local に展開して /usr/local/go/bin を PATH に追加します。新しいターミナルを開き、go version を実行して確認します。
「go: command not found」はどう直せばよいですか?
シェルが PATH 上に go バイナリを見つけられていません。Linuxでは ~/.profile(zshなら ~/.zshrc)に export PATH=$PATH:/usr/local/go/bin を追加し、新しいターミナルを開きます。WindowsやmacOSのインストーラーを使った場合は、ターミナルを閉じて開き直すだけで直ることがほとんどです。ターミナルは起動時の PATH を持ち続けるからです。
UbuntuにGoをインストールするには?
公式のtarballを使います:sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz を実行してから、/usr/local/go/bin を PATH に追加します。sudo apt install golang-go でも入りますが、Ubuntuのパッケージは数リリース古いことがよくあります。sudo snap install go --classic なら最新のリリースに追従します。
GOPATHを設定する必要はありますか?
ありません。Go 1.16以降はモジュールモードがデフォルトなので、コードはどのディレクトリに置いても構いません。GOPATH のデフォルトは $HOME/go で、モジュールのダウンロードキャッシュと、go install がビルドしたバイナリの置き場所($HOME/go/bin)にしか使われません。
インストールされているGoのバージョンを確認するには?
go version を実行します。go version go1.24.5 linux/amd64 のように、リリース、続いてOSとCPUアーキテクチャが表示されます。go env は、GOROOT(Goのインストール先)や GOPATH を含む設定全体を表示します。