Go 语言字符串切片排序

要对Go语言中的字符串切片进行排序,可以使用sort包中的Strings函数。

以下是对一个字符串切片进行升序排序的示例代码:

package main
import (
    "fmt"
    "sort"
)

func main() {
    fruits := []string{"banana", "apple", "orange", "pear"}
    sort.Strings(fruits)
    fmt.Println(fruits) // 输出 ["apple", "banana", "orange", "pear"]
}

在上面的代码中,Strings函数对fruits字符串切片进行升序排序,输出结果为["apple", "banana", "orange", "pear"]。

如果要按照降序排列,可以使用sort.Reverse函数和sort.StringSlice类型进行排序:

package main
import (
    "fmt"
    "sort"
)

func main() {
    fruits := []string{"banana", "apple", "orange", "pear"}
    sort.Sort(sort.Reverse(sort.StringSlice(fruits)))
    fmt.Println(fruits) // 输出 ["pear", "orange", "banana", "apple"]
}

在上面的代码中,sort.StringSlice将fruits字符串切片转换为sort.Interface类型,然后使用sort.Reverse将其反转,最后使用sort.Sort方法进行排序,输出结果为["pear", "orange", "banana", "apple"]。


如果要按照自定义的排序规则进行排序,可以使用sort.Slice函数和比较函数作为参数。例如,可以按照字符串长度对字符串切片进行排序:

package main

import (
    "fmt"
    "sort"
)

func main() {
    fruits := []string{"banana", "apple", "orange", "pear"}
    sort.Slice(fruits, func(i, j int) bool {
        return len(fruits[i]) < len(fruits[j])
    })
    fmt.Println(fruits) // 输出 ["pear", "apple", "banana", "orange"]
}

在上面的代码中,sort.Slice函数接受一个比较函数作为参数,该函数比较字符串的长度。按照字符串长度升序排序后,输出结果为["pear", "apple", "banana", "orange"]。