1、Homebrew安装
前提:安装Homebrew The Missing Package Manager for macOS (or Linux) — Homebrew
intel:brew install go
M1:arch -arm64 brew install go
brew使用代理:export https_proxy=http://127.0.0.1:8888 http_proxy=http://127.0.0.1:8888 all_proxy=socks5://127.0.0.1:8888
2、官方下载安装包或者源码安装
1、GOROOT
安装go后,自动设置GOROOT的环境变量。是用来存放go语言内建程式库的所在位置,当import
内建的程式库的时候,并不需要额外安装,预先去GOROOT
路径下寻找对应的程式。库。
官方包安装:MacOS 对应的 GOROOT 就是/usr/local/go目录。Windows 和 Linux 也是同样的道理。
brew安装:MacOS使用安装路径在/usr/local/Cellar
go env查看:GOROOT="/opt/homebrew/Cellar/go/1.16.2/libexec"
2、GOPATH
安装后有默认的路径,MacOS 安装完 GO 后会自动把 /Users/username/go
目录当作 GOPATH 。一般也可以自己设置。存放第三方库,还有下载编译安装好的二进制工具等。
(1)二进制安装:go get -u是下载最新源码和安装。go mod模式下,go get方式不推荐,直接go install "github.com/rogpeppe/godef@latest",会下载pkg然后安装生成二进制。
过程:会自动拉最新源码:$GOPATH/pkg/mod/github.com/rogpeppe,然后生成二进制到$GOBIN目录:$GOPATH//bin(自动生成目录,也可指定自己的GOBIN)
环境变量配置加上$GOBIN后,go相关工具直接bash敲命令就是找的这个路径
(2)项目路径:$GOPATH/src,里面包括自己的项目和第三方项目。如果你开发的项目采用第三方库是不同版本怎么办?以往的解决方法是要设定多组不同的GOPATH
。虽然社群也有开发相对应的package manager,如Vendor、Dep来解决该问题,但毕竟不是官方主导的。接下来介绍Go Modules就是解决GOPATH的问题的。
3、Go Modules
go1.11开始推出。类似Java的Maven做法,将第三方库存在本地,给其他项目去引用。
(1)配置选项,可以设置到环境变量(本机用的是zsh,写在.zshrc)
GO111MODULE=
auto,go会根据当前目录来决定是否启用modules功能。需要满足两种情形:该专案目录不在GOPATH/src/
下,当前或上一层目录存在go.mod
档案。
GO111MODULE=on,
go会使用modules,而不会GOPATH
目录下查找。
GO111MODULE=
off,go将不会支持module功能,用GOPATH
去找库。
(2)初始化:go mod init
'go mod init example.com/m' to initialize a v0 or v1 module
'go mod init example.com/m/v2' to initialize a v2 module
(3)下载包的两种方法
第一种:先定义go.mod,然后执行go mod download。
module jing
go 1.16
require github.com/gin-gonic/gin v1.6.3
下载路径在:$GOPATH/pkg/mod/github.com,同时缓存一份到:$GOPATH/pkg/mod/cache/download/github.com/
第二种:根据源码import的第三方库,自动下载依赖包的命令:go mod tidy。
下载路径在:$GOPATH/pkg/mod/github.com,同时缓存一份到:$GOPATH/pkg/mod/cache/download/github.com/
1、安装vscode,然后安装go插件。
2、alt+shift+p
3、输入回车:Install/Update Tools,勾选确定安装即可。在$GOPATH/bin路径常用工具安装成功。
1、官方或者brew安装go
2、查看GOPATH:go env | grep -i path
3、随便装个包:go install "golang.org/x/tools/gopls@latest"
4、在查到的GOPATH下面bin目录找到安装的二进制:gopls
5、设置二进制文件目录到环境变量