2 回答
TA贡献1802条经验 获得超6个赞
github.com/satori/go.uuid文档似乎支持GOPATH构建。go module但是,构建会产生不一致的结果。
从它的README.md中获取简单的 API 用法:
package main
import "github.com/satori/go.uuid"
func main() {
u, err := uuid.NewV4()
_, _ = u, err
}
并尝试编译它go modules:
go mod init
go build
go: finding module for package github.com/satori/go.uuid
go: found github.com/satori/go.uuid in github.com/satori/go.uuid v1.2.0
./main.go:6:9: assignment mismatch: 2 variables but uuid.NewV4 returns 1 values
它被标记v1.2.0并且无法编译。
所以现在拉出最新的提交:
go get github.com/satori/go.uuid@master
go: github.com/satori/go.uuid master => v1.2.1-0.20181028125025-b2ce2384e17b
现在它编译:
go build && echo $?
0
那么这里发生了什么?
github.com/satori/go.uuid标记为成熟v1版本,因此所有 dot 版本都应该是没有重大更改的功能增强。最新的标记版本v1.2.0仅从uuid.NewV4().
最新提交(go modules推断 . 的伪点发布版本v1.2.1-0.20181028125025-b2ce2384e17b)具有与README.md.
如果此 repo 被标记为v1.2.1- 这将是一个重大更改,因为它会更改在先前v1版本中发布的函数的签名。这将违反semver规则。
结论:
该文档与GOPATH(即非go modules)构建相匹配。GOPATH构建总是拉最新的提交。
从一个go modules角度来看,虽然一个人可能能够强制构建一个有效的构建,但它看起来并不被支持。是的,git repo 使用semver标签,但没有go.mod.
我不会相信这个包有一个go modules构建。也许考虑使用github.com/google/uuid。
TA贡献1798条经验 获得超3个赞
该uuid
软件包有不同的版本。在最新版本中,函数 NewV4() 仅返回一个变量,但在以前的版本中,它返回两个变量,其中一个是error
.
您在项目的子目录中创建一个go.mod
文件,因此当您在主目录中编译项目时,go-compiler 使用一个版本,而在您的ui
目录中它使用另一个版本进行编译。您应该只在文件中编辑uuid
包的版本。go.mod
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报