一、下载安装包
- 访问地址:golang.google.cn
- 点击 Apple macOS 中的链接下载软件包至本地
- 双击PKG包,即可进入安装向导
- 点下一步直至最后,即可完成GO的安装
二、验证GO的版本
- go version 命令,能够返回当前安装的GO的版本
go version go1.17.8 darwin/amd64
三、配置代理
由于下载的GO版本比较新,在配置【GO111MODULE】会与1.11之前的版本有区别。下面讨论两个参数【GO111MODULE】【GOPROXY】
3.1 GO111MODULE
在社区文章中看到如下解释:
- 2009年开始推出GO的时候,并没有包含包管理器的功能,使用go get(GO1.17中已过时)进行依赖的获取,获取的所有源存储在
$ GOPATH / src
中 ;
- GO 1.11版本后引入GO模块,GO Modules不在使用GOPATH存储每个git checkout ,而是使用go.mod进行版本标记,并跟踪每个软件包的版本;
- 从此,『GOPATH 行为』与『Go Modules 行为』之间的交互已成为 Go 的最大难题之一
- GO111MODULE 是一个环境变量,可以在使用 go 更改 Go 导入包的方式时进行设置。GO111MODULE的默认值岁版本变迁不同
GO111MODULE with Go 1.11 and 1.12 自行配置
GO111MODULE with Go 1.13 默认值:auto
GO111MODULE with Go 1.14 默认值:auto
GO111MODULE with Go 1.16 默认值:on
GO111MODULE with Go 1.17 默认值:on auto与on相同
GO111MODULE=off,无模块支持,强制采用GOPATH模式来查找
GO111MODULE=on,模块支持,go命令行会使用modules,需要依赖go.mod的文件
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
(1)当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
(2)当前文件在包含go.mod文件的目录下面。
- 手动设置方式:go env -w GO111MODULE=on
3.2 GOPROXY
- 是GO的代理设置,拉取一些第三方库文件
- 默认是:GOPROXY=“h ttps://proxy.golang.org,direct”
- 国内代理:GOPROXY=https://goproxy.cn,direct
- go env -w GOPROXY=https://goproxy.cn,direct
四、初始化项目
- go mod init hello
- 会出现 go.mod 文件,可以在GO111MODULE=on/auto的情况下进行依赖版本管理
- 编写代码后,拉取依赖包的方式有【go get 包名】(新版本已经过时)/【go mod tidy】(此命令扫描所有代码的import命令,并进行依赖包的拉取)
五、编译运行代码
- go build 生成编译后的对象(go mod init后跟的名字)
- ./hello 即可执行
引用
Why is GO111MODULE everywhere, and everything about Go Modules (updated with Go 1.17)