1 回答
TA贡献1829条经验 获得超6个赞
您可能应该使用标准的 Go 语义版本比较包之一来执行此操作,而不是重新发明轮子。对于初学者,使用hashicorp/go-version包来语义比较两个版本字符串
package main
import (
"fmt"
"sort"
"github.com/hashicorp/go-version"
)
type byVersion []string
func (s byVersion) Len() int {
return len(s)
}
func (s byVersion) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s byVersion) Less(i, j int) bool {
v1, err := version.NewVersion(s[i])
if err != nil {
panic(err)
}
v2, err := version.NewVersion(s[j])
if err != nil {
panic(err)
}
return v1.LessThan(v2)
}
func main() {
versions := []string{"1.4", "1.12", "1.21", "1.8"}
sort.Sort(byVersion(versions))
fmt.Println(versions)
}
产生预期的预期结果。
[1.4 1.8 1.12 1.21]
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报