April 2022
Beginner to intermediate
464 pages
6h 44m
Japanese
Goは go build としてビルドするときは、さまざまなフラグを用いてビルドできます。本節では本番環境向けにビルドするときに明日から使えるオプションを紹介します。以下のプログラムをビルドすることを考えてみます。
package main
import "fmt"
var version string
func main() {
fmt.Printf("Hello 世界, version = %s", version)
}
本番環境向けにビルドするとき、以下のようにオプションを付与してビルドできます。
$ CGO_ENABLED=0 go build -trimpath -ldflags '-s -w -X main.version=1.0.0' main.go
それぞれのオプションがどのようなものなのか説明します。
Goではランタイムに合わせたシングルバイナリを作成できます。本番環境用に配布する実行バイナリは小さいに越したことはありません。go build 時に-ldflags フラグを付与し go build -ldflags '-s -w' main.go などとしてビルドすることで、バイナリサイズを小さくできます。
筆者の環境でビルドしたところ、以下のような違いがありました。
package main
import "fmt"
func main() {
fmt.Println("Hello 世界")
}
|
|
|---|---|
1.9MiB |
1.3MiB |
フラグを付与するだけでバイナリサイズが小さくなるので、本番環境向けのビルドは積極的に ...
Read now
Unlock full access