通过定义 struct tag 的相关属性,可以解析大部份版本号字符串到一个结构体中。
type Version struct {
Major int `version:"0,number,.1"`
Minor int `version:"1,number,+2"`
Build string `version:"2,string"`
}
ver := &Version{}
version.Parse(ver, "2.1+160616")
// 解析之后
// ver.Major == 2, ver.Minor == 1, ver.Build == 160616
同时也定义了一个 semver 的一个内部实现。
semver,err := version.SemVer("2.10.1+build")
if err != nil{
// TODO
}
fmt.Println(semver)
// semver.Major == 2
// semver.Minor == 10
// semver.Patch == 1
// semver.Build == build
go get github.com/issue9/version