本文實例講述了Go語言使用sort包對任意類型元素的集合進行排序的方法。分享給大家供大家參考。具體如下:
使用sort包的函數(shù)進行排序時,集合需要實現(xiàn)sort.Inteface接口,該接口中有三個方法:
復制代碼 代碼如下:
// Len is the number of elements in the collection.
Len() int
// Less reports whether the element with
// index i should sort before the element with index j.
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
Swap(i, j int)
以下為簡單示例:
復制代碼 代碼如下:
//對任意對象進行排序
type Person struct {
name string
age int
}
//為*Person添加String()方法,便于輸出
func (p *Person) String() string {
return fmt.Sprintf("( %s,%d )", p.name, p.age)
}
type PersonList []*Person
//排序規(guī)則:首先按年齡排序(由小到大),年齡相同時按姓名進行排序(按字符串的自然順序)
func (list PersonList) Len() int {
return len(list)
}
func (list PersonList) Less(i, j int) bool {
if list[i].age list[j].age {
return true
} else if list[i].age > list[j].age {
return false
} else {
return list[i].name list[j].name
}
}
func (list PersonList) Swap(i, j int) {
var temp *Person = list[i]
list[i] = list[j]
list[j] = temp
}
func interfaceTest0203() {
fmt.Println("------")
p1 := Person{"Tom", 19}
p2 := Person{"Hanks", 19}
p3 := Person{"Amy", 19}
p4 := Person{"Tom", 20}
p5 := Person{"Jogn", 21}
p6 := Person{"Mike", 23}
pList := PersonList([]*Person{p1, p2, p3, p4, p5, p6})
sort.Sort(pList)
fmt.Println(pList)
/*output:
[( Amy,19 ) ( Hanks,19 ) ( Tom,19 ) ( Tom,20 ) ( Jogn,21 ) ( Mike,23 )] */
}
希望本文所述對大家的Go語言程序設計有所幫助。
您可能感興趣的文章:- golang使用sort接口實現(xiàn)排序示例
- go語言中sort包的實現(xiàn)方法與應用詳解
- go語言中排序sort的使用方法示例