与Java相比,Golang有一个明显的优势是它可以直接编译出可执行文件,然后扔到任意机器上运行,而Java编译出的jar则需要在目标机器上先安装JDK或JRE才能运行。

在macOS中编译Linux和Windows上的可执行文件:

# linux
GOOS=linux GOARCH=amd64 go build [-o output] filename.go

# Windows
GOOS=windows GOARCH=amd64 go build [-o output.exe] filename.go

在Linux中编译macOS和Windows上的可执行文件:

# macOS
GOOS=darwin GOARCH=amd64 go build [-o output] filename.go

# Windows
GOOS=windows GOARCH=amd64 go build [-o output.exe] filename.go

在Windows中编译macOS和Linux上的可执行文件:

# macOS
SET GOOS=darwin
SET GOARCH=amd64
go build [-o output] filename.go
 
# Linux
SET GOOS=linux
SET GOARCH=amd64
go build [-o output] filename.go

其实就是需要在编译前先设置环境变量GOOS和GOARCH

GOOS的可选值有:linux, darwin, windows, netbsd等

GOARCH的可选值有:arm, amd64, 386, ppc64等