文章标题 原创 翻译 转载 文章内容 golang排序写法还是蛮简洁的,不管是简单类型还是复杂的结构,倒序排序的时候可能有点奇怪不知道为什么这样设计 ``` package main import ( "fmt" "sort" ) type Person struct { Name string Age int } func main() { // 整型排序 intList := []int{3, 5, 1, 3, 6, 4, 65, 1} fmt.Println("int排序前:", intList) sort.Sort(sort.IntSlice(intList)) // 简洁写法:sort.Ints(intList) fmt.Println("int排序后:", intList) sort.Sort(sort.Reverse(sort.IntSlice(intList))) fmt.Println("int倒序排序后:", intList) fmt.Println("-------------------------------------------") // 字符串排序 strList := []string{"aaa", "ccc", "eee", "bbbb", "dddd"} fmt.Println("字符串排序前:", strList) sort.Sort(sort.StringSlice(strList)) // 简洁写法:sort.Strings(strList) fmt.Println("字符串排序后:", strList) sort.Sort(sort.Reverse(sort.StringSlice(strList))) fmt.Println("字符串倒序排序后:", strList) fmt.Println("-------------------------------------------") // 结构体排序 p1 := Person{"foo", 31} p2 := Person{"wff", 33} p3 := Person{"bob", 32} personList := []Person{p1, p2, p3} fmt.Println("结构体排序前:", personList) sort.Slice(personList, func(i int, j int) bool { return personList[i].Name < personList[j].Name }) fmt.Println("结构体名字排序后:", personList) sort.Slice(personList, func(i int, j int) bool { return personList[i].Name > personList[j].Name }) fmt.Println("结构体名字倒序排序后:", personList) sort.Slice(personList, func(i int, j int) bool { return personList[i].Age < personList[j].Age }) fmt.Println("结构体年龄排序后:", personList) sort.Slice(personList, func(i int, j int) bool { return personList[i].Age > personList[j].Age }) fmt.Println("结构体年龄倒序排序后:", personList) } ``` 输出结果: ``` int排序前: [3 5 1 3 6 4 65 1] int排序后: [1 1 3 3 4 5 6 65] int倒序排序后: [65 6 5 4 3 3 1 1] ------------------------------------------- 字符串排序前: [aaa ccc eee bbbb dddd] 字符串排序后: [aaa bbbb ccc dddd eee] 字符串倒序排序后: [eee dddd ccc bbbb aaa] ------------------------------------------- 结构体排序前: [{foo 31} {wff 33} {bob 32}] 结构体名字排序后: [{bob 32} {foo 31} {wff 33}] 结构体名字倒序排序后: [{wff 33} {foo 31} {bob 32}] 结构体年龄排序后: [{foo 31} {bob 32} {wff 33}] 结构体年龄倒序排序后: [{wff 33} {bob 32} {foo 31}] ``` 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交