一、第一个go程序之HelloWorld

package main     // 声明 main 包,表明当前是一个可执行程序

import "fmt"        // 导入内置 fmt 包

func main(){       // main函数,是程序执行的入口
    fmt.Println("Hello World!")  // 在终端打印 Hello World!
}

 

二、编译go程序

go build表示将源代码编译成可执行文件。

go build -o 编译后可执行文件的路径 需要编译代码的路径

在hello目录下执行:

go build .      # 表示编译当前目录下的代码

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

go build hello

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

go build -o hello.exe ./

go编译器会去 GOPATH的src目录下查找你要编译的hello项目

编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是windows平台会在当前目录下找到hello.exe可执行文件。

可在终端直接执行该hello.exe文件:

d:\code\go\src\hello>hello.exe
Hello World!

 

编译时判断程序是否有数据竞争

 

go build --race .         // 数据竞争的意思就是:是否有多个携程同时修改一个数据问题(编译时不会报错,编译后执行时会提示那行有数据竞争问题)

  

 

三、go install

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

 

四、跨平台编译

默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?

只需要指定目标操作系统的平台和处理器架构即可:

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

然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。

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

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

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

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

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

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build