Go语言中的代理配置与版本依赖性管理

发表时间: 2024-05-14 09:04
> # wget -c https://dl.google.com/go/go1.16.6.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local> # vim /etc/profileexport PATH=$PATH:/usr/local/go/bin> # source /etc/profile

配置 Goproxy 环境变量

Bash (Linux or macOS)export GOPROXY=https://goproxy.io,direct
PowerShell (Windows)$env:GOPROXY = "https://goproxy.io,direct"

使配置长久生效 (推荐)

上面的配置步骤只会当次终端内生效, 如何长久生效呢, 这样就不用每次都去配置环境变量了。

Mac/Linux# 设置你的 bash 环境变量echo "export GOPROXY=https://goproxy.io,direct" >> ~/.profile && source ~/.profile# 如果你的终端是 zsh,使用以下命令echo "export GOPROXY=https://goproxy.io,direct" >> ~/.zshrc && source ~/.zshrc

Windows

1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量

2. 在 "[你的用户名]的用户变量" 中点击 "新建" 按钮

3. 在 "变量名" 输入框并新增 "GOPROXY"

4. 在对应的 "变量值" 输入框中新增 "https://goproxy.io,direct"

5. 最后点击 "确定" 按钮保存设置

package main    import (    "fmt"    "github.com/robfig/cron")func main() {    i := 0    c := cron.New()    spec := "*/5 * * * * ?"    c.AddFunc(spec, func() {        i++        fmt.Println("cron running:", i)    })    c.Start()    select {}}
> # go run cron.gocron.go:6:2: no required module provides package github.com/robfig/cron; to add it:go get github.com/robfig/cron


解决方法:

> # go get github.com/robfig/crongo: downloading github.com/robfig/cron v1.2.0go get: added github.com/robfig/cron v1.2.0> # go run cron.gocron running: 1cron running: 2cron running: 3
> # go.modmodule testgo 1.16require github.com/robfig/cron v1.2.0 // indirect

我们去掉 require github.com/robfig/cron v1.2.0 // indirect 这一行的内容

问题再次出现

> # go run cron.gocron.go:6:2: no required module provides package github.com/robfig/cron; to add it:go get github.com/robfig/cron> # go get github.com/robfig/crongo get: added github.com/robfig/cron v1.2.0> # go run cron.gocron running: 1cron running: 2cron running: 3

第二种方式: 手工添加

> # vim go.modmodule testgo 1.16require (github.com/robfig/cron)
> # go mod tidygo: errors parsing go.mod:D:\test\go.mod:7:2: usage: require module/path v1.2.3

我们发现需要添加版本号

> # vim go.modmodule testgo 1.16require (github.com/robfig/cron v1)

注意: 版本号需要自己去github.com去查询

> # go mod tidy> # cat go.modmodule testgo 1.16require (github.com/BurntSushi/toml v0.3.1 // indirectgithub.com/apcera/termtables v0.0.0-20170405184538-bcbc5dc54055 // indirectgithub.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97degithub.com/fxamacker/cbor/v2 v2.3.0github.com/minio/minio-go/v7 v7.0.11github.com/natefinch/lumberjack v2.0.0+incompatiblegithub.com/robfig/cron v1.2.0github.com/scylladb/termtables v1.0.0go.uber.org/zap v1.17.0gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect)

我们发现自动添加了 v1.2.0 版本号

> # go run cron.gocron running: 1cron running: 2cron running: 3