ツールチェーンのインストール
公式のダウンロードページから、利用しているOS向けのインストーラまたはアーカイブを入手してインストールします。
ターミナルを開き、go versionを実行してツールチェーンが導入されたか確認します。
go version次のようにバージョン情報が表示されれば、正しくインストールされています。正しくインストールされていない場合はcommand not foundなどのエラーが出ます。
go version go1.27.1 windows/amd64最新の安定版情報はリリース履歴で確認できます。
プロジェクトの作成とモジュールの初期化
Go言語では、プログラムをモジュールという単位で管理します。プロジェクト用のディレクトリを作成し、その直下でgo mod initを実行してモジュールを初期化します。
mkdir hello
cd hello
go mod init example.com/hello実行すると、プロジェクトのルートにgo.modが作成されます。初期状態ではモジュール名とGo言語のバージョンが書かれ、外部パッケージを追加すると依存もここに記録されます。
Go言語1.16以降はモジュールモードが標準のため、任意のディレクトリでプロジェクトを開始できます。旧来のGo言語のように、決められた作業領域(GOPATH)の下にソースコードを配置する必要はありません。
Hello, Worldの実行
初期化したディレクトリ内にプログラムファイルを作成し、動作を確認します。ソースファイルのファイル名に言語仕様上の縛りはなく、hello.goなど任意の名前にできますが、エントリポイントを含むファイルには慣習としてmain.goが広く使われます。
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}プログラムを実行するには、ファイル名を直接指定してgo run main.goを実行します。
go run main.goカレントディレクトリを指定するgo run .でも同様に実行できます。末尾の.はカレントディレクトリのパッケージ全体を対象にすることを表します。ファイルが1つだけのときはどちらでも動作します。
go run .ターミナルにHello, Worldと出力されれば、コンパイルと実行が正常に行われています。
プログラムの基本構成
実行可能なプログラムには、package mainの宣言と、引数も戻り値もないfunc main()が必要です。
先頭のpackage mainが、このパッケージがエントリポイントであることを示します。他パッケージを使うときはimportで取り込みます。上の例では標準ライブラリの入出力のためにimport "fmt"を書き、func main()の中でfmt.Printlnを呼んでいます。
Go言語では、使っていないimportや、関数内で宣言したまま使っていない変数があるとコンパイルエラーになります。
複数ファイルでの構成
同一ディレクトリにある複数の.goファイルは、同じpackage句を書くことで1つのパッケージとしてまとまります。別ファイルで定義した関数も、同じパッケージ内であればそのまま呼び出せます。
たとえばgreet.goに関数を定義し、main.goのfunc main()から呼び出す例です。
// greet.go
package main
func greet(name string) string {
return "Hello, " + name
}// main.go
package main
import "fmt"
func main() {
fmt.Println(greet("Go言語"))
}複数ファイルがある環境でgo run main.goのように単一ファイルのみを指定すると、他のファイルがコンパイル対象に含まれず、undefined: greetのような未定義エラーになります。ファイルを並べてgo run main.go greet.goと実行することもできますが、ファイルが増えるごとに指定が必要になるため、日常的にはカレントディレクトリのパッケージ全体をまとめてビルド・実行するgo run .を使用します。
基本的なコマンド
go run
一時的にコンパイルしてプログラムを即座に実行します。開発中にすぐ動かしたい場合に使います。
go run .go build
実行可能バイナリを生成します。配布やデプロイ用のファイルを書き出すときに使います。-oオプションで出力ファイル名を指定できます。省略した場合は、モジュール名の末尾(この例ではhello)が実行ファイル名になります。
go build -o hello .go fmt
Go言語の標準スタイルに従ってソースコードを自動整形します。インデントや改行位置が一貫した形式に整います。ディレクトリ配下を一括で整形するときは./...を指定します。
go fmt ./...go test
パッケージ内のテストコード(_test.go)を検出して実行します。
go test ./...