【linux】

1.下载二进制包

wget https://golang.google.cn/dl/go1.17.6.linux-amd64.tar.gz

2.将下载的二进制包解压至 /usr/local目录

cd /usr/local tar -zxvf go1.17.6.linux-amd64.tar.gz

3.将 /usr/local/go/bin 目录添加至 PATH 环境变量

(1)编辑配置文件

cd ~ vim /etc/profile

(2)加入内容

# goland

export GOROOT=/usr/local/go

export GOPATH=/usr/local/go/gopath/

export PATH=$PATH:$GOROOT/bin

注意:GOPATH的值不能与GOROOT相同

(3)在GPPATH目录下新建 bin、pkg、src 三个文件夹

cd /usr/local/go/gopath/

mkdir bin

mkdir pkg

mkdir src

(4)刷新配置文件

source /etc/profile

Golang环境变量设置详解 - Go语言中文网 - Golang中文社区

【mac】

(1)下载pkg安装包

https://golang.google.cn/dl/

(2)修改配置文件.bash_profile

vim .bash_profile
export GOROOT=/usr/local/go

export GOPATH=/usr/local/go/gopath/

export PATH=$PATH:$GOROOT/bin

备注:GOPATH决定依赖存放位置

(2)在GPPATH目录下新建 bin、pkg、src 三个文件夹

cd /usr/local/go/gopath/

mkdir bin

mkdir pkg

mkdir src

(3)刷新配置文件

source .bash_profile

【Windows】

(1)配置GOROOT

GOROOT的变量值即为GO的安装目录/usr/local/go

(2)配置GOPATH

GOPATH的变量值即为存储Go语言项目的路径/usr/local/go/Go_WorkSpace

在上述GOPATH对应路径下,新建 bin、pkg、src 三个文件夹,见下图:

(3)配置Path

Path中有其他安装程序的配置信息,这里再增加一个GO的bin目录/usr/local/go/bin

(4)验证是否配置成功

go env

(5)通过命令查看安装的Go的版本

go version

【帮助】

go help gopath

【注意事项】

  • 依赖安装位置 GOPATH=/usr/local/go/gopath
  • GOPATH可以是一个目录列表,执行 go get下载的第三方库,一般都会下载到列表的第一个目录里面
  • 需要把GOPATH中的可执行目录也配置到环境变量中, 否则你自行下载的第三方go工具就无法使用了
  • GOPATH必须包含src、pkg、bin三个文件

go依赖包管理

【安装第三方依赖】

go install github.com/xuri/excelize

go get github.com/xuri/excelize

模块化安装

go get github.com/xuri/excelize/v2

(1)如果遇到提示“go get: module github.com/xuri/excelize/v2: Get "https://proxy.golang.org/github.com/xuri/excelize/v2/@v/list": dial tcp 142.251.42.241:443: i/o timeout”

解决办法:开启翻墙或设置国内镜像

(2)如果遇到提示“go: could not create module cache: mkdir /usr/local/go/gopath/pkg/mod: permission denied”

解决办法:

先执行下面命令创建mod,再重新执行模块安装命令

sudo mkdir /usr/local/go/gopath/pkg/mod

go依赖包管理

【更新第三方方依赖】

go get -u github.com/xuri/excelize/v2

【使用go modules】

sudo mkdir /usr/local/go/gopath/pkg/mod

go mod 是官方的包管理工具,之前有非官方的包管理工具,例如:go vendor等工具

发展历程

在go1.11版本之后,go mod就被指定为官方包管理工具,它提供了更加灵活的管理办法,可以对包进行版本控制,而且你的项目也不需要一定放在GOPATH下了。

Go 1.14中,模块支持被认为已准备好用于生产,并且鼓励所有用户从其他依赖项管理系统迁移到模块。

建议使用 Go 1.15及以后的版本

Using Go Modules - The Go Programming Language

使用前需做的准备

set GO111MODULE=on

可以用环境变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。

GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。

GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。

GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。

在使用模块的时候,GOPATH 是无意义的,不过它还是会把下载的依赖储存在 GOPATH/pkg/mod中,也会把goinstall的结果放在GOPATH/bin 中

set GOPRIVATE=XXX.XXX.com

该命令为使用代理时,过滤GOPRIVATE设置的域名下的包下载,通常为私有库

该命令为 Go 1.13版本新增的特性

​
set GOPROXY=https://goproxy.cn

该命令为设置代理,防止被qiang,按需设置

还有其他代理如,https://goproxy.io;http://mirrors.aliyun.com/goproxy/

Go Mod 命令

download    download modules to local cache (下载依赖的module到本地cache))

edit        edit go.mod from tools or scripts (编辑go.mod文件)

graph      print module requirement graph (打印模块依赖图))

init        initialize new module in current directory (再当前文件夹下初始化一个新的module, 创建go.mod文件))

tidy        add missing and remove unused modules (增加丢失的module,去掉未用的module)

vendor      make vendored copy of dependencies (将依赖复制到vendor下)

verify      verify dependencies have expected content (校验依赖)

why        explain why packages or modules are needed (解释为什么需要依赖)

实操

1. 执行go mod  init

go mod init demo

执行完两句命令之后,你会看到,项目下多了go.mod和go.sum文件。

go.mod: 可以理解为包管理文件

go.sum: 可以理解为包的版本控制文件

更准确地来说,go.sum是一个构建状态跟踪文件

 注意:

2. go mod  tidy

go mod tidy

使用go mod之后,包下载之后是放在了$GOPATH/pkg/mod下

参考文档:

https://blog.csdn.net/benben_2015/article/details/82227338

https://blog.csdn.net/wangyufeng43400141/article/details/107170481/

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐