go mod tidy的作用
go mod tidy的作用 - 简书 (jianshu.com)https://www.jianshu.com/p/7675b8923878
使用go的时候我们一般都会使用go mode 管理。
有些时候merge的时候,会出现go.sum冲突,然后合并冲突后,解决go.sum不合法的情况。
这个时候我们一般会执行go mod tidy
命令。
那么go mod tidy是干什么的呢?
go mod tidy的使用
- 引用项目需要的依赖增加到go.mod文件。
- 去掉go.mod文件中项目不需要的依赖。
下面我们会现场演示这两个作用。
前置准备:
- 环境linux系统
开始演示:
1. 引用项目需要的依赖增加到go.mod文件。
1.1 随便找一个文件夹,执行命令go mod init learn
新建一个go mod 的项目。
1.2 新建文件uuid.govim uuid.go
然后复制以下内容
package main
import (
"fmt"
"strings"
"github.com/pborman/uuid"
)
func main() {
uuidWithHyphen := uuid.NewRandom()
uuid := strings.Replace(uuidWithHyphen.String(), "-", "", -1)
fmt.Println(uuid)
}
然后保存wq!
1.3 执行命令 go mod tidy
使用cat go.mod
查看go.mod文件会发现多了一行
2. 删除go.mod文件中引用项目不需要的依赖。
执行rm -r uuid.go
删除uuid.go文件,然后执行go mod tidy -v
其中-v可以显示整个命令的执行过程
执行命令cat go.mod
查看go.mod文件
执行的依赖没有了。
解决 go module 拉取 etcd 相关依赖包引发的错误
gomodule拉取etcd依赖包时会报错:
go.etcd.io/etcd/clientv3 tested by
go.etcd.io/etcd/clientv3.test imports
github.com/coreos/etcd/auth imports
github.com/coreos/etcd/mvcc/backend imports
github.com/coreos/bbolt: github.com/coreos/bbolt@v1.3.5: parsing go.mod:
module declares its path as: go.etcd.io/bbolt
but was required as: github.com/coreos/bbolt
引起以上的原因主要是etcd中使用的bbolt和grpc版本冲突引起
go mod init
go mod edit -replace github.com/coreos/bbolt=go.etcd.io/bbolt@v1.3.4
go mod edit -replace google.golang.org/grpc=google.golang.org/grpc@v1.26.0
go mod tidy
如此即可避免etcd相关错误
如何引入一个本地包:(注意:这种情况下是不能标注版本号的)
go mod edit -replace ddis=../ddis
解决 VScode 报错【gopls requires a module at the root of your workspace】
setting.json添加
"gopls": {
"experimentalWorkspaceModule": true,
}
参考:
解决go mod拉取etcd依赖包报错的问题_思维的深度的博客-CSDN博客https://skaygo.blog.csdn.net/article/details/111060465Etcd使用go module的灾难 - Go语言中文网 - Golang中文社区 (studygolang.com)https://studygolang.com/articles/28589