Go 支持的操作系统与处理机架构

Go 被设计为一门支持多平台多处理机架构的程序设计语言,开发团队与开源社区维护着多个平台不同架构的 Go 编译工具链,使用 Go 编写的应用程序可以无缝以极小的成本在不同平台不同架构之间进行迁移。

go tool dist list
图:Go 支持的操作系统与处理机架构
aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/386
darwin/amd64
darwin/arm
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
illumos/amd64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/riscv64
linux/s390x
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm
go tool dist list

Go 安装预编译二进制包

安装 Go 预编译二进制包是搭建 Go 开发环境最简便的方式,Go 开发团队提供了主流 Windows / macOS / Linux 操作系统的预编译二进制包,前往 Golang Downloads 页面,选择对应的安装包下载安装即可。

Golang Downloads 地址: https://golang.org/dl/
图:Go 预编译二进制包

Go 源代码编译安装

从源代码编译安装 Go 是搭建 Go 开发环境最佳方式。Go 作为一门标准的编译型图灵完备程序设计语言,开发团队在工程技术层面实现了语言自举(Bootstrapping),即:使用 Go 编写的工具链编译 Go

go1.4-bootstrapC -> Go 1.4 Bootstrap -> Go Latest

编译 Go 1.4(Bootstrap)

gitrelease-branch.go1.4go1.4-bootstrap-20171003.tar.gzsrcall.bash
# 取得 Go 1.4 Bootstrap 源码包
$ curl -O 'https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz'
# 解压缩解包
$ tar -xvz -f 'go1.4-bootstrap-20171003.tar.gz'
# 目录重命名(方便区分)
$ mv 'go' 'go_1.4_bootstrap'
# 进入`src`目录
$ cd 'go_1.4_bootstrap/src'
# 禁用 CGO 
$ export CGO_ENABLED=0
# 执行编译脚本
$ bash 'all.bash'
...
代码清单:编译 Go 1.4(Bootstrap)流程
linux/amd64
ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/ziheng/go_temp/go_1.4_bootstrap
Installed commands in /home/ziheng/go_temp/go_1.4_bootstrap/bin
*** You need to add /home/ziheng/go_temp/go_1.4_bootstrap/bin to your PATH.
代码清单:Go 1.4(Bootstrap)编译提示信息
bin/go
# 回退上级目录
$ cd ..
# 显示当前 Go 版本
$ bin/go version
go version go1.4-bootstrap-20170531 linux/amd64
代码清单:Go 1.4(Bootstrap)编译验证

编译 Go 1.15(Latest)

GOROOT_BOOTSTRAPall.bash
# git 拉取 Go 源码库
$ git clone 'https://github.com/golang/go.git'
$ cd go
# 切换至最新分支
$ git checkout 'release-branch.go1.15' 
# 指定 Go 1.4 Bootstrap 路径
$ export GOROOT_BOOTSTRAP='/home/ziheng/go_temp/go_1.4_bootstrap'
# 进入`src`目录
$ cd src
# 执行编译脚本
$ bash 'all.bash'
...
代码清单:编译 Go 1.15(Latest)流程
bin/go
# 回退上级目录
$ cd ..
# 显示当前 Go 版本
$ bin/go version
go version go1.15 linux/amd64
代码清单:Go 1.5(Latest)编译验证
$PATH
# 添加 Go 安装路径至 PATH 环境变量
$ cat >> ~/.bashrc << 'EOF'
export GOROOT='/path/to/your/go/install'
PATH="${PATH}:${GOROOT}/bin"
EOF
$PATH

裁减 Go 编译中间文件

obj${GOROOT}/pkg/obj
# 源代码目录下
$ rm -rf pkg/obj
代码清单:裁减 Go 编译中间文件

Hello, world!

Hello, world!Hello, world!
package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
    fmt.Println("你好,世界!")
}
// EOF
Hello, world
Hello, world!
$ go build main.go
$ ./main
Hello, world!
你好,世界!
Hello, world

俗话说得好,工欲善其事,必先利其器。随着 Go 的流行,诸多厂商、开发者开发了支持 Go 的集成开发环境(IDE)与编辑器插件,优秀的开发工具帮助我们更具效率地开发 Go 。

表:支持 Go 的集成开发环境(IDEs)
vscode-govscode-go
  • 自动代码补全
  • 代码跳转
  • 代码格式化
  • 代码风格检查
  • 集成测试
  • 代码调试
  • ...


vscode-go

参考资料

  • Book:《The Way to Go》