sort.Slice(s, less) sắp xếp slice tại chỗ dựa trên hàm so sánh less(i, j) bool — trả về true nếu phần tử i phải đứng trước j. Không cần implement interface sort.Interface.
Lưu ý:
- sort.Slice không ổn định (thứ tự phần tử bằng nhau có thể đổi); cần ổn định thì dùng sort.SliceStable.
- So sánh nhiều field bằng cách xâu chuỗi điều kiện: field chính trước, hòa mới xét field phụ.
go
type Person struct {
Name string
Age int
}
people := []Person{{"Bob", 30}, {"Ann", 25}}
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age // tăng dần theo Age
})