一、Hello World

现在我们来创建第一个Go项目——hello。创建一个hello目录。
在该目录中创建一个main.go文件

  1. package main // 声明 main 包,表明当前是一个可执行程序
  2. import "fmt" // 导入内置 fmt 包
  3. func main(){ // main函数,是程序执行的入口
  4. fmt.Println("Hello World!") // 在终端打印 Hello World!
  5. }

image.png

二、go build

go build表示将源代码编译成可执行文件。
在hello目录下执行:

  1. go build

或者在其他目录执行以下命令:

  1. go build hello

还可以使用-o参数来指定编译后得到的可执行文件的名字。

  1. go build -o heiheihei

go编译器会去 GOPATH的src目录下查找你要编译的hello项目,编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是windows平台会在当前目录下找到hello.exe可执行文件。我们还可以使用-o参数来指定编译后得到的可执行文件的名字。
注意:go build报错:
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
需要执行go mod init初始化项目

三、go install

go install表示安装的意思,它先编译源代码得到可执行文件,然后将可执行文件移动到GOPATH的bin目录下。因为我们的环境变量中配置了GOPATH下的bin目录,所以我们就可以在任意地方直接执行可执行文件了。

四、跨平台编译

默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?
只需要指定目标操作系统的平台和处理器架构即可:

  1. SET CGO_ENABLED=0 // 禁用CGO
  2. SET GOOS=linux // 目标平台是linux
  3. SET GOARCH=amd64 // 目标处理器架构是amd64

使用了cgo的代码是不支持跨平台编译的,然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。
Mac 下编译 Linux 和 Windows平台 64位 可执行程序:

  1. CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
  2. CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Linux 下编译 Mac 和 Windows 平台64位可执行程序:

  1. CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
  2. CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Windows下编译Mac平台64位可执行程序:

  1. SET CGO_ENABLED=0
  2. SET GOOS=darwin
  3. SET GOARCH=amd64
  4. go build