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 關注
- 131 瀏覽
添加回答
舉報