Go 插件每日推荐之 go-version | Go 主题月

·  阅读 293
Go 插件每日推荐之 go-version | Go 主题月

大家好,我是 @洛竹

本文首发于 洛竹的官方网站

本文同步于公众号『洛竹早茶馆』,转载请联系作者。

创作不易,养成习惯,素质三连!

一个用于解析和验证版本和版本约束的 Go (golang) 库。

这个库可以理解为 semver 的简版,go-version 是一个用于解析版本和版本约束的库,并根据一组约束来验证版本。go-version 可以对版本集合进行正确的排序,处理预 prerelease/beta 版本,可以递增版本等。

与 go-version 一起使用的版本必须遵循 SemVer

安装

可以在 GoDoc 上查看包文档。

可以使用 go get 完成安装:

$ go get github.com/hashicorp/go-version
复制代码

Version Parsing and Comparison

v1, err := version.NewVersion("1.2")
v2, err := version.NewVersion("1.5+metadata")

// 比较的例子。还有 GreaterThan、Equal 以及允许简单地使用 `>=`、`<=` 进行比较并返回 int 值的方法
if v1.LessThan(v2) {
    fmt.Printf("%s is less than %s", v1, v2)
}
复制代码

版本约束

v1, err := version.NewVersion("1.2")

// 约束例子
constraints, err := version.NewConstraint(">= 1.0, < 1.4")
if constraints.Check(v1) {
	fmt.Printf("%s satisfies constraints %s", v1, constraints)
}
复制代码

版版排序

versionsRaw := []string{"1.1", "0.7.1", "1.4-beta", "1.4", "2"}
versions := make([]*version.Version, len(versionsRaw))
for i, raw := range versionsRaw {
    v, _ := version.NewVersion(raw)
    versions[i] = v
}

// 一顿操作之后,版本被很好地排了序
sort.Sort(version.Collection(versions))
复制代码

Issues and Contributing

如果你发现这个库有问题,请报告问题。如果你愿意,我们欢迎任何贡献。Fork 这个库并提交一个 pull request。

分类:
后端
标签:
分类:
后端
标签: