我们可以检查字符串的一部分是否用
排序var slice = []string { "a", "b }
sort.StringsAreSorted(slice)
但是,当您拥有结构时,又想知道该结构的一部分是否由某个成员排序,该怎么办?
type Person struct {
Name string
LastName string
}
var p = []Person{ {"John", "Smith" }, { "Ben", "Smith" } }
sort.StringsAreSorted(p???)
答案 0 :(得分:3)
如果您的类型实现了http://qaru.site/questions/2455460/expo-cannot-find-a-module-logreporter,只需使用sort.Interface
函数。
如果没有,您可以使用sort.IsSorted()
,并传递一个less()
函数来决定/指定顺序:
sortedByName := sort.SliceIsSorted(p, func(i, j int) bool {
return p[i].Name < p[j].Name
})
fmt.Println("Sorted by name:", sortedByName)
sortedByLastName := sort.SliceIsSorted(p, func(i, j int) bool {
return p[i].LastName < p[j].LastName
})
fmt.Println("Sorted by last name:", sortedByLastName)
这将输出(在sort.SliceIsSorted()
上尝试):
Sorted by name: false
Sorted by last name: true
如果您研究这些函数的实现,它们将使用一个简单的循环来遍历元素,并确定彼此相邻的元素是否不违反顺序(less()
函数)。您也可以轻松地使用for循环。