go module 快速上手
说明:这篇文章不说为什么,只讲怎么做。
go环境安装
请移步:https://blog.walkbc.com/2019/11/19/installGolang/
基础配置
升级golang到1.13版本
设置GO111MODULE=on
go env -w GO111MODULE=on
设置GOPROXY
go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,https://goproxy.io,https://athens.azurefd.net,direct
说明:欢迎大家补充新的好用的代理;最后的direct不要省略。
使用
初始化项目
cd projectName go mod init projectName //在项目目录下执行
这个操作会生成go.mod 和go.sum文件。
- go.mod会记录当前的go和依赖的包的版本,就像是node的package.json文件,这个文件可以编辑。
- go.sum会记录依赖包的校验和,这个文件不需要编辑。
添加依赖包
使用go get,但是要在包后添加版本号,格式如:
go get -u packageName@latest
go get packageNam@v1.23.1
直接在go.mod文件的require段下添加依赖包,如:
require ( github.com/golang/protobuf v1.3.2 golang.org/x/net v0.0.0-20190311183353-d8887717615a google.golang.org/grpc v1.23.0 ) //或者 require google.golang.org/grpc v1.23.0
这种方式并不会下载依赖包,需要执行go mod download或者go mod tidy;执行go build和go run的时候也会下载依赖包。
关于replace
背景:出于某些原因,我们在require中指定的依赖可能无法正常获取,比如:
- 原则性的网络问题
- 权限问题
- 没有发布的本地包
- 其他(欢迎补充)
这个时候replace就能派上用场了:
最简单的例子,假设需要使用:golang.org/x/net
包,正常情况下是肯定不可能的,此时我们就需要用 replace 进行替代,格式如:
replace golang.org/x/net => github.com/golang/net v0.0.0-20191116160921-f9c825593386
在不确定替换包的版本时,可以指定为:latest。
一些常见的replace可以参考:常用的go module replace设置
关于goland 设置
我发现个goland的小问题:如果不在IDE中设置GOPROXY(即使go env已经设置),那么语法高亮会失效。如图:
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 irvin.em@live.com。
文章标题:go module 快速上手
文章字数:514
本文作者:dino
发布时间:2019-11-18, 14:29:05
最后更新:2019-12-06, 18:12:14
原始链接:https://blog.walkbc.com/2019/11/18/usingGoModule/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
QQ交流群:273078549