您的当前位置:首页正文

根据字符串的长度和字符值的大小来对字符串切片进行排序

2024-11-29 来源:个人技术集锦

在 Go 语言中,根据字符串的长度和字符值的大小来对字符串切片进行排序。示例如下:

package main

import (
	"fmt"
	"sort"
)

// 自定义类型,以实现排序接口
type byLengthAndValue []string

// 实现 sort.Interface 的 Len 方法
func (s byLengthAndValue) Len() int {
	return len(s)
}

// 实现 sort.Interface 的 Swap 方法
func (s byLengthAndValue) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}

// 实现 sort.Interface 的 Less 方法
func (s byLengthAndValue) Less(i, j int) bool {
	// 首先根据字符串的长度排序
	if len(s[i]) != len(s[j]) {
		return len(s[i]) < len(s[j])
	}
	// 如果长度相同,再根据字符串的字典顺序排序
	return s[i] < s[j]
}

func main() {
	strs := []string{"apple", "banana", "kiwi", "grape", "pear", "orange"}

	// 使用 sort.Sort 方法进行排序
	sort.Sort(byLengthAndValue(strs))

	fmt.Println("Sorted strings:", strs)
}

解释:

输出:

运行这个程序后,可以看到字符串按长度排序,如果长度相同,则按字典顺序排序。例如:

Sorted strings: [kiwi pear apple grape banana orange]

在这个例子中,“kiwi” 和 “pear” 都是四个字符长,“kiwi” 在字典顺序上先于 “pear”。“apple”、“grape”、“banana” 和 “orange” 按长度排列,然后根据字典顺序排列。

显示全文