ここでは、Go 言語を使用して簡単な Hello World プログラムを作成し、コンパイル&実行してみます。
Go 言語で Hello World を実装する
Go 言語のソースコードファイルの拡張子は、.go
を使用します。
エントリポイントとなる Go プログラムは、main
パッケージとして作成し、main
関数を含んでいる必要があります(main.main
と表現します)。
ファイル名は何でも構いません。
Hello World を実行する
Go 言語はコンパイル型の言語ですが、go run
コマンドを使用すると、ソースコードファイルを指定してそのまま実行することができます。
$ go run hello.go
Hello Go
ビルドして実行ファイル(Windows なら hello.exe
)を作成するには、go build
コマンドを使用します。
$ go build hello.go
$ ./hello
Hello Go
作成された実行ファイルは、同じ環境(OS、アーキテクチャ)であれば、Go の処理系がインストールされていなくてもそのまま実行することができます。 別の OS 用にビルドする場合は、クロスコンパイルの機能を使用します。 Go のクロスコンパイルがサポートしている OS と CPU アーキテクチャは、こちらのドキュメント に記述されています。
(応用)モジュール対応モードでアプリを作成する
いろいろな外部パッケージを活用して Go アプリを作る場合、モジュールとしてアプリを初期化します(module-aware mode と呼びます)。
モジュールを初期化するには、モジュールルートにしたいディレクトリの下で go mod init <モジュールパス名>
を実行します。
Node.js アプリの開発経験があるなら、npm init
のようなものだと考えると分かりやすいです。
上記のように、モジュールのルートディレクトリ (hello
) に go.mod
ファイルが作成されれば成功です。
このファイルには、このモジュールの名前や、Go のバージョン、パッケージの依存情報 (dependency tracking) などが保存されます。
シンプルな構成のアプリでは、モジュールのルートディレクトリに、main
パッケージとする .go
ファイルを配置します。
ファイル名は何でもいいですが、main.go
としておきます。
モジュールのディレクトリ構成は次のようになっています。
hello/
(モジュールルート)main.go
(main 関数を含む main パッケージの実装)go.mod
(go mod init で自動生成された)
このアプリを実行するには、モジュールルートから次のように go run
を実行します。
モジュール対応モードの場合、main
パッケージのディレクトリ名 (.
) を指定するだけでよいことに注意してください。
$ go run .
Hello Go
ビルドして実行ファイルを作りたい場合は、go build
を実行します。
ここでは、パッケージ名の指定すら必要ありません。
出力される実行ファイルの名前はモジュール名に従って hello
、あるいは hello.exe
になります(-o
オプションで変更できます)。
$ go build
$ ./hello
Hello Go
これで、Go 言語での簡単な Hello World アプリの導入は完了ですが、ある程度の規模のアプリを開発する場合は、自分でパッケージ用のディレクトリを作ったり、外部パッケージをインポートして実装していくことになります。 Go 言語でのパッケージの概念に関しては、下記を参考にしてください。