Chủ đề Go quan trọng
Sorting in Go: sort and slices
Sort numbers, strings and structs, and write your own order with a comparison function.
Bạn sẽ học được gì
- sort.Ints
- slices.SortFunc
- sort.Slice for structs
Ranking
Leo95
Mia82
Zoe82
Ben67
You decide the order
Go sorts slices in place. sort.Ints and sort.Strings cover the simple cases, and sort.Slice or slices.SortFunc take a function that decides the order.
slices.SortFunc compares two items and returns a negative number, zero or a positive number; comparing the lower-case forms ignores capital letters. sort.Slice takes a function that says whether item i comes before item j: here a higher score first, then the name.
Những điểm quan trọng
- Sorting changes the slice in place.
sort.Slicetakes a less function.- Break ties with a second comparison.
Ví dụ Go chạy được
main.go
package main
import (
"fmt"
"slices"
"sort"
"strings"
)
type Student struct {
Name string
Score int
}
func main() {
numbers := []int{5, 2, 8, 1}
sort.Ints(numbers)
fmt.Println(numbers)
words := []string{"pear", "Apple", "fig"}
slices.SortFunc(words, func(a, b string) int {
return strings.Compare(strings.ToLower(a), strings.ToLower(b))
})
fmt.Println(words)
students := []Student{{"Mia", 82}, {"Leo", 95}, {"Zoe", 82}, {"Ben", 67}}
sort.Slice(students, func(i, j int) bool {
if students[i].Score != students[j].Score {
return students[i].Score > students[j].Score
}
return students[i].Name < students[j].Name
})
for rank, student := range students {
fmt.Printf("%d. %s (%d)\n", rank+1, student.Name, student.Score)
}
}
[1 2 5 8]
[Apple fig pear]
1. Leo (95)
2. Mia (82)
3. Zoe (82)
4. Ben (67)Luyện tập
Mở ví dụ trong trình biên dịch online, đổi một giá trị hoặc thêm một dòng, rồi đoán kết quả trước khi chạy. Sau đó cố ý làm code bị lỗi và đọc thông báo của trình biên dịch.
Bạn học xong bài này chưa?
Đánh dấu đã học để theo dõi tiến độ của bạn.
Tiến độ của bạn đang được lưu trong trình duyệt này Đăng nhập để giữ tiến độ trên mọi thiết bị.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
Tất cả thử thách