Go語(yǔ)言使用sort包對(duì)任意類(lèi)型元素的集合進(jìn)行排序的方法
本文實(shí)例講述了Go語(yǔ)言使用sort包對(duì)任意類(lèi)型元素的集合進(jìn)行排序的方法。分享給大家供大家參考。具體如下:
使用sort包的函數(shù)進(jìn)行排序時(shí),集合需要實(shí)現(xiàn)sort.Inteface接口,該接口中有三個(gè)方法:
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)
以下為簡(jiǎn)單示例:
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ī)則:首先按年齡排序(由小到大),年齡相同時(shí)按姓名進(jìn)行排序(按字符串的自然順序)
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 )] */
}
希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。
相關(guān)文章
golang 對(duì)私有函數(shù)進(jìn)行單元測(cè)試的實(shí)例
這篇文章主要介紹了golang 對(duì)私有函數(shù)進(jìn)行單元測(cè)試的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05Go語(yǔ)言string,int,int64 ,float之間類(lèi)型轉(zhuǎn)換方法
Go語(yǔ)言中int類(lèi)型和string類(lèi)型都是屬于基本數(shù)據(jù)類(lèi)型,兩種類(lèi)型的轉(zhuǎn)化都非常簡(jiǎn)單。下面通過(guò)本文給大家分享Go語(yǔ)言string,int,int64 ,float之間類(lèi)型轉(zhuǎn)換方法,感興趣的朋友一起看看吧2017-07-07Golang實(shí)現(xiàn)單元測(cè)試中的接口層
接口層主要負(fù)責(zé)的就是請(qǐng)求的處理,最常見(jiàn)的就是?HTTP?請(qǐng)求的處理。這篇文章主要為大家介紹了Golang如何實(shí)現(xiàn)單元測(cè)試中的接口層,需要的可以參考一下2023-03-03golang如何實(shí)現(xiàn)mapreduce單進(jìn)程版本詳解
這篇文章主要給大家介紹了關(guān)于golang如何實(shí)現(xiàn)mapreduce單進(jìn)程版本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Go語(yǔ)言運(yùn)行環(huán)境安裝詳細(xì)教程
這篇文章主要介紹了Go語(yǔ)言運(yùn)行環(huán)境安裝詳細(xì)教程,本文講解了Linux、MAC OS、Windows下的安裝方法,同時(shí)講解了驗(yàn)證是否安裝成功、第三方工具安裝運(yùn)行環(huán)境的方法,需要的朋友可以參考下2014-10-10Golang環(huán)境變量設(shè)置和查看工具go env詳解
go env 是 Go 工具鏈中的一個(gè)命令,用于設(shè)置和查看當(dāng)前 Golang 環(huán)境的相關(guān)信息,對(duì)于理解、編譯和運(yùn)行 Golang 程序非常有用,本文就給大家簡(jiǎn)單的介紹一下Golang環(huán)境變量設(shè)置和查看工具go env,需要的朋友可以參考下2023-07-07