Here’s an easy tip for reducing the size of binaries in Go.
It’s as simple as specifying a couple of flags for the linker,
-ldflags="-s -w", and results in the following reduction:
$ go build -o hello_gophers hello_gophers.go $ stat -f "%z %N" hello_gophers 7372276 hello_gophers $ go build -o hello_gophers -ldflags="-s -w" hello_gophers.go $ stat -f "%z %N" hello_gophers 5823988 hello_gophers
As described in the documentation,
-s omits the symbol table and debug information, and
-w omits DWARF debugging information.
That’s not a bad savings, for adding some flags. Even greater compression has been achieved by using UPX, at the cost of increased startup time.