Blue Flower

Hello, Go!

Go 1.16 发布

go1.16 (released 2021/02/16),支持 Apple silicon Mac。

Go 1.16 正式发布,添加了 macOS ARM64(Apple silicon)的支持,该版本主要包括工具链、运行时和库的实现优化。并且,该版本保留了 Go 1 兼容性的承诺,几乎所有 Go 程序都能像以前一样继续编译和运行。详见:Go 1.16 Release Notes

Darwin and iOS

Go 1.16 adds support of 64-bit ARM architecture on macOS (also known as Apple silicon) with GOOS=darwin, GOARCH=arm64. Like the darwin/amd64 port, the darwin/arm64 port supports cgo, internal and external linking, c-archive, c-shared, and pie build modes, and the race detector.

The iOS port, which was previously darwin/arm64, has been renamed to ios/arm64. GOOS=ios implies the darwin build tag, just as GOOS=android implies the linux build tag. This change should be transparent to anyone using gomobile to build iOS apps.

Go 1.16 adds an ios/amd64 port, which targets the iOS simulator running on AMD64-based macOS. Previously this was unofficially supported through darwin/amd64 with the ios build tag set. See also misc/ios/README for details about how to build programs for iOS and iOS simulator.

Go 1.16 is the last release that will run on macOS 10.12 Sierra. Go 1.17 will require macOS 10.13 High Sierra or later.

核心平台版本下载:

File name Kind OS Arch Size SHA256 Checksum
go1.16.darwin-amd64.tar.gz Archive macOS x86-64 124MB 6000a9522975d116bf76044967d7e69e04e982e9625330d9a539a8b45395f9a8
go1.16.darwin-arm64.tar.gz Archive macOS ARMv8 120MB 4dac57c00168d30bbd02d95131d5de9ca88e04f2c5a29a404576f30ae9b54810
go1.16.linux-amd64.tar.gz Archive Linux x86-64 123MB 013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2
go1.16.windows-amd64.zip Archive Windows x86-64 137MB 5cc88fa506b3d5c453c54c3ea218fc8dd05d7362ae1de15bb67986b72089ce93
go1.16.windows-amd64.msi Installer Windows x86-64 119MB 0fd550a74f6c8ef5df405751f5e39a0ba25786930c5d61503bf71d3c3efa2414

其它版本,请访问官网:https://golang.google.cn/dl/

下载体验

文本基于 Visual Studio Code 1.50,Go 1.16。

VS Code 1.50:

Go 1.16:百度网盘链接:https://pan.baidu.com/s/1nVIk7V4C3aaYGKk8NFiJTA 提取码:h3pi

  • go1.16.darwin-amd64.tar.gz - macOS Intel x64
  • go1.16.darwin-arm64.tar.gz - macOS Apple silicon
  • go1.16.linux-amd64.tar.gz - Linux x86-64
  • go1.16.windows-amd64.zip - Windows x86-64 zip
  • go1.16.windows-amd64.msi - Windows x86-64 msi

macOS go 开发环境

0. 系统准备

知识兔
  • macOS Big Sur 11

  • 安装 Xcode Command Line Tools:xcode-select --install (若报错需要离线安装,下载)

  • 安装 brew:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

  • 安装 oh-my-zsh(推荐,非必须):sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"参看说明

GitHub 的这个域名需要文明访问
通过 https://www.ipaddress.com/ 查询,美国地址有效,添加到 hosts 文件(sudo vi /etc/hosts
199.232.96.133 raw.githubusercontent.com

1. 下载安装

知识兔

下载体验:https://golang.google.cn/dl/,也有 pkg 格式软件包。

1
2
3
4
curl -O https://golang.google.cn/dl/go1.16.darwin-amd64.tar.gz
## 或者 (sysin)
# wget https://dl.google.com/go/go1.16.darwin-amd64.tar.gz
sudo tar zxvf go1.16.darwin-amd64.tar.gz -C /usr/local

2. 添加环境变量

知识兔

Go 环境变量解释
GOROOT 就是 go 的安装路径
GOPATH 是 go tools 用到的环境变量,不要把 GOPATH 设置成 go 的安装路径,通常可以在用户目录下创建一个 gopath 目录用作 GOPATH

以下是添加用户环境变量(推荐):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 创建目录
mkdir ~/gopath

#zsh (sysin)
echo '
export GOROOT=/usr/local/go
export GOPATH=~/gopath
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
' >> ~/.zshrc
source ~/.zshrc

#bash (sysin)
将以上 ~/.zshrc 替换为 ~/.bashrc

验证:

1
2
$ go version
go version go1.16 darwin/amd64

如有必要也可以添加全局变量(一般不需要):

1
2
3
4
5
6
7
8
9
# 编辑/etc/profile文件`sudo vi /etc/profile`添加如下:
#go setting
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin

# 生效
source /etc/profile

3. go 命令自动补全

知识兔
  • 安装

在终端输入

1
2
3
go get -u github.com/posener/complete/gocomplete
# 命令会下载到 $GOPATH/bin 目录下
gocomplete -install

退出终端,重新打开生效。

  • 卸载
1
gocomplete -uninstall

4. 安装 VS Code 和 Go 扩展

知识兔

如果你还没有安装 VS Code, 直接下载安装 Visual Studio Code。浏览到“扩展面板” Extensions pane (Ctrl+Shift+X)。搜索 “Go” 并安装即可 (the publisher ID is golang.Go)。

Go 其他 IDE

LiteIDE:一款开源、跨平台的轻量级 Go 语言集成开发环境(IDE),基于 Qt 开发。

Goxxxx:付费软件,Jxxxxx 公司推出的 Go 语言集成开发环境。因为使用了该公司和产品名称被误认为侵权,只好隐藏😓

5. 安装 go tools

知识兔

按 F1 键,输入 >go:install,下面会自动搜索相关命令,知识兔选择 Go:Install/Update Tools 这个命令(使用 VS Code 打开 go 文件也会提示安装“xxx”工具)。

安装报错无法访问 https://proxy.golang.org/,被墙。

换一个国内能访问的代理地址:https://goproxy.cn

执行命令:

1
2
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

重新安装,正确通过!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Tools environment: GOPATH=/~/gopath
Installing 17 tools at ~/gopath/bin in module mode.
gocode
gopkgs
go-outline
go-symbols
guru
gorename
gotests
gomodifytags
impl
fillstruct
goplay
godoctor
dlv
gocode-gomod
godef
goreturns
golint

6. 智能提示

知识兔

使用 VS Code 打开一个文件夹,在文件夹中新建一个 .go 文件,例如:Helloworld.go,打开 Helloworld.go,输入 p,可以看到提示 package main 等内容已经出现。

示例:Helloworld.go

1
2
3
4
5
package main

func main() {
println("Hello", "world")
}

示例:Version.go

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
"runtime"
)

func main() {
fmt.Printf("%s", runtime.Version())
}

7. 格式化代码

知识兔

在 VS Code 编辑区域右键点击出现菜单,选择“格式化文档”即可。

Go 开发团队不想要 Go 语言像许多其它语言那样总是在为代码风格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制作了一个工具:go fmtgofmt)。这个工具可以将你的源代码格式化成符合官方统一标准的风格 (sysin),属于语法风格层面上的小型重构。遵循统一的代码风格是 Go 开发中无可撼动的铁律,因此你必须在编译或提交版本管理系统之前使用 gofmt 来格式化你的代码。

在命令行输入 gofmt –w program.go 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容(如果不加参数 -w 则只会打印格式化后的结果而不重写文件);gofmt -w *.go 会格式化并重写所有 Go 源文件;gofmt map1 会格式化并重写 map1 目录及其子目录下的所有 Go 源文件。

Go 对于代码的缩进层级方面使用 tab 还是空格并没有强制规定,但是使用 gofmt 格式化代码后将使用 Tab 替代空格(VS Code 默认设置一个 Tab 等于 4 个空格)。

通过设置显示 Tab 和 空格来查看或者验证格式化效果。在 VS Code 打开“设置”,在搜索框中输入 renderControlCharacters,选中勾选框,即可显示 Tab;在搜索框中输入 renderWhitespace,选择 all,即可显示空格。

8. 编译和运行第一个程序

知识兔

安装 VS Code 扩展 Code Runner,在编辑区域右键点击出现菜单,选择“Run Code”,可以看到程序执行结果:

Helloworld.go 输出:Hello world

Version.go 输出:go1.16

打开终端,编译:

1
go build Helloworld.go

执行程序:

1
./Helloworld

可以看到执行结果:Hello world

Linux go 编译环境

这里仅配置 Linux Shell 下的编译环境。

桌面环境可以参照上述 macOS 部分。

1. 软件包准备

知识兔

CentOS (8):

1
2
3
yum install gcc make -y
yum install rsync jq -y
yum install git -y

Ubuntu (20.04):

1
2
3
sudo apt install build-essential #(Following command will install essential commands like gcc, make etc.)
sudo apt install rsync jq -y
sudo apt install git -y

2. 下载安装

知识兔
1
2
3
4
5
6
7
8
9
10
11
12
13
14
wget https://dl.google.com/go/go1.16.linux-amd64.tar.gz
## 或者 (sysin)
# wget https://golang.google.cn/dl/go1.16.linux-amd64.tar.gz
tar zxvf go1.16.linux-amd64.tar.gz -C /usr/local

# 编辑/etc/profile文件添加如下:
#go setting
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin

#生效
source /etc/profile

3. 验证

知识兔
1
2
go version
go version go1.16 linux/amd64

4. go 命令自动补全

知识兔
1
2
3
go get -u github.com/posener/complete/gocomplete
# 命令会下载到 $GOPATH/bin 目录下
gocomplete -install

Windows go 开发环境

0. 系统准备

知识兔

1. 下载安装

知识兔

下载 zip 压缩包版本:https://golang.google.cn/dl/go1.16.windows-amd64.zip

直接解压,例如:C:\go

(另有 msi 软件包可直接安装:https://golang.google.cn/dl/go1.16.windows-amd64.msi

2. 环境变量

知识兔

图形界面创建环境变量

图形界面(Windows 10):此电脑 --> 属性 --> 高级系统设置 --> 高级 --> 环境变量…

  • 用户变量:

    • 新建:GOPATH = %UserProfile%\gopath (例如:当前用户是 C:\Users\Administrators)
    • PATH 变量增加一条 %GOPATH%\bin
  • 系统变量:

    • 新建:GOROOT = C:\go
    • PATH 增加了一条 %GOROOT%\bin

备注:msi 安装包自动创建了两个环境变量(不完整),分别是:

  • 用户变量:gopath = %UserProfile%\go (例如:当前用户是 C:\Users\Administrators)
  • 系统变量:path 增加了一条 C:\go\bin

PowerShell 添加环境变量

环境变量所在注册表位置如下:

  • 用户变量所在位置:HKEY_CURRENT_USER\Environment

  • 系统变量所在位置:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

创建两条:

1
2
3
4
5
6
7
8
9
10
[environment]::SetEnvironmentvariable("GOPATH", "$env:USERPROFILE\gopath", "User")
#调用命令结果:$(命令)
#获取原有用户 PATH 变量:$([environment]::GetEnvironmentvariable("Path", "User"))
#注意 PATH 中条目以分号结尾
[environment]::SetEnvironmentvariable("PATH", "$([environment]::GetEnvironmentvariable("Path", "User"));%GOPATH%\bin", "User")

[environment]::SetEnvironmentvariable("GOROOT", "C:\go", "Machine")
#调用命令结果:$(命令)
#获取原有系统 PATH 变量:$([environment]::GetEnvironmentvariable("Path", "Machine"))
[environment]::SetEnvironmentvariable("PATH", "$([environment]::GetEnvironmentvariable("Path", "Machine"));%GOROOT%\bin", "Machine")

验证:

1
2
$ go version
go version go1.16 windows/amd64

3. go 命令自动补全

知识兔

gocomplete 仅适用于 shell,Windows 下无效。

4. 安装 VS Code 和 Go 扩展

知识兔

如果你还没有安装 VS Code, 直接下载安装 Visual Studio Code。浏览到“扩展面板” Extensions pane (Ctrl+Shift+X)。搜索 “Go” 并安装即可 (the publisher ID is golang.Go)。

5. 安装 go tools

知识兔

按 F1 键,输入 >go:install,下面会自动搜索相关命令,知识兔选择 Go:Install/Update Tools 这个命令(使用 VS Code 打开 go 文件也会提示安装“xxx”工具)。

安装报错无法访问 https://proxy.golang.org/,被墙。

换一个国内能访问的代理地址:https://goproxy.cn

执行命令:

1
2
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

重新安装,正确通过!

1
2
3
4
5
6
7
8
9
10
11
Tools environment: GOPATH=C:\Users\Administrator\gopath
Installing 9 tools at C:\Users\Administrator\gopath\bin in module mode.
gopkgs
go-outline
gotests
gomodifytags
impl
goplay
dlv
golint
gopls

6. 测试智能提示

知识兔

使用 VS Code 打开一个文件夹,在文件夹中新建一个 .go 文件,例如:Helloworld.go,打开 Helloworld.go,输入 p,可以看到提示 package main 等内容已经出现。

Helloworld.go

1
2
3
4
5
package main

func main() {
println("Hello", "world")
}

Version.go

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
"runtime"
)

func main() {
fmt.Printf("%s", runtime.Version())
}

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载