Go入門:文法のきほん
go buildと1バイナリ
この回でやること
go runとgo buildの違いを、実行ファイルを配る場面から読み解きます。
- 読む 約 7 分
- 最後にクイズ 1 問
go run と go build の違い
fleama の起動メッセージを確認するときは、go run main.go を使えます。Go はコードを実行できる形へコンパイルして、そのまま起動します。試した結果をすぐ見るときに便利です。
配布するファイルを作るなら go build を使います。次の命令は、出力ファイルの名前を fleama-go に指定します。-o の後ろが出力名で、最後の main.go が入力するソースファイルです。
プレーンテキスト
go build -o fleama-go main.go
./fleama-go1行目で作り、2行目で実行します。./ は今いる場所のファイルを指定します。起動すると「fleama-go を起動します」と表示されます。2回目に実行ファイルを起動するときは、同じコードをもう一度ビルドする必要はありません。コードを直したら、変更を取り込むためにビルドし直します。
1バイナリとは
Go の通常のビルドでは、自分のコードと使う標準ライブラリの処理を1つの実行ファイルにまとめます。配布先に Go のコンパイラを入れなくても、そのファイルを実行できます。
プレーンテキスト
Node.js 実行環境と依存ファイル、アプリのコードを用意する
Go 配布先に合う実行ファイルを用意するただし、実行ファイルは配布先の OS と CPU に合っている必要があります。外部の共有ライブラリを使う構成なら、その準備も必要です。「1つのファイルを置けば必ずどこでも動く」という意味ではありません。
実行する前に分かるエラー
Go は未使用の変数などをビルド時にエラーとして示します。たとえば total を宣言して使わなければ、次のように止まります。
プレーンテキスト
declared and not used: totalこれは実行ファイルを配る前に修正します。コンパイルを先に行う分、ソースを書き換えても、エラーが残る間は新しいファイルを作れません。
実行ファイルには処理がまとまるため、小さなソースでも数 MB になることがあります。大きさは利用するライブラリやビルド条件で変わります。配るファイルの数と容量は別に確認します。
例題で確かめる
棚卸しツールを go build -o stock stock.go で作り、担当者の端末で ./stock を実行しました。その後、表示文だけをソースで直しても、既存の stock の表示は変わりません。もう一度ビルドして新しい実行ファイルを渡すと、修正後の文が表示されます。実行ファイルには、ビルドした時点のコードが入っているためです。