1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個贊
您可能應(yīng)該使用標(biāo)準(zhǔn)的 Go 語義版本比較包之一來執(zhí)行此操作,而不是重新發(fā)明輪子。對于初學(xué)者,使用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)
}
產(chǎn)生預(yù)期的預(yù)期結(jié)果。
[1.4 1.8 1.12 1.21]
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報