使用gomod管理项目
关于go mod 如何使用,网上教程很多,这里主要记一下自己使用过程中遇到过的问题
go env 环境变量设置
**在讲项目之前先说一下环境变量的设置问题,因为 Go 1.13 将 GOPROXY
默认成了中国大陆无法访问的 https://proxy.golang.org ,所以建议先修改 GOPROXY
保证正常使用 go
来开发应用,这里建议设置成 goproxy.cn 。可以通过命令go env -w GOPROXY=goproxy.cn,direct
设置 **
新建一个项目文件夹
在项目根目录下使用 go mod init example.com
定义项目使用gomod管理,然后项目根目录下会生成go.mod文件
使用公有库文件
这个比较简单,在代码中引入某个文件,例如:import (github.com/*** ),使用 go mod tidy 或其它程序启动命令,gomod会自动下载该文件,路径为gobin目录下的pkg下的mod文件夹
使用私用库文件
在代码中引入某个私用库文件(该文件夹下必须也有go.mod文件才可以被引用),例如import (我自己的域名myprivate.com/***) ,使用go mod tidy 或其它程序启动命令,gomod就会自动下载该文件。
go env 环境变量
GOSUMDB="sum.golang.org"
# 指示校验和服务器的地址和公钥,若要关闭校验,GOSUMDB=off。
GOPRIVATE=""
# GOPRIVATE表示私有仓库。私有仓库下的所有依赖一律从源站下载,而且不做校验(如果设置私有仓库的话,下面这两个值为默认设为私有库地址)。
GONOPROXY=
# 不设置代理
GONOSUMDB=
# 不校验公钥
我这里放几个自己的错误提示
-
下载路径问题
这里可以看到 下载路径上莫名多了一级 goproxy.cn。我想下载私有库的文件,但是没有从源站点下载。
通过设置 go env -w GOPRIVATE=“私有库地址” 问题解决 -
引入文件命名问题
这里提示模块引入路径不对检查自己创建的 test_hy 文件(引入文件),发现go mod 文件命名为:test_hy 把引入的go.mod文件命名改为路径模式 devops.******/test_hy 此时再次尝试go mod tidy 问题解决 总结:引用的gomod文件命名必须和下载的路径一致
-
关于gomod引用文件的版本问题
被引入文件的目录结构及内容如图:
测试程序的结构及内容如图:
当go.mod中使用5月12号的test_hy版本时 报变量c.Ma找不到。
当go.mod中使用5月13号的test_hy版本时 程序正常运行。
使用本地文件
例如:我在D:/新建一个项目命名为 example,然后D:/conf 里有example项目想用的方法或变量,
那怎么用呢?首先 保证 conf下有go.mod文件。然后再 example的go.mod文件的require里直接添加
conf v0.0.1 (这里注意版本是三位数字,写的时候可以注意观察,写到三位时vscode会提示颜色会变化) 再写上 replace conf => D:\conf
conf文件内容如图:
测试用文件内容如图: