佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Go語言使用sort包對任意類型元素的集合進(jìn)行排序的方法

Go語言使用sort包對任意類型元素的集合進(jìn)行排序的方法

熱門標(biāo)簽:呼叫中心市場需求 百度競價(jià)排名 地方門戶網(wǎng)站 Linux服務(wù)器 服務(wù)外包 網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) AI電銷

本文實(shí)例講述了Go語言使用sort包對任意類型元素的集合進(jìn)行排序的方法。分享給大家供大家參考。具體如下:

使用sort包的函數(shù)進(jìn)行排序時(shí),集合需要實(shí)現(xiàn)sort.Inteface接口,該接口中有三個方法:

復(fù)制代碼 代碼如下:
// 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)

以下為簡單示例:

復(fù)制代碼 代碼如下:
//對任意對象進(jì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 )] */ 
}

希望本文所述對大家的Go語言程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • golang使用sort接口實(shí)現(xiàn)排序示例
  • go語言中sort包的實(shí)現(xiàn)方法與應(yīng)用詳解
  • go語言中排序sort的使用方法示例

標(biāo)簽:衡水 湖南 蘭州 崇左 仙桃 黃山 銅川 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語言使用sort包對任意類型元素的集合進(jìn)行排序的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    吴江市| 梁河县| 工布江达县| 公安县| 和政县| 江都市| 南昌市| 烟台市| 石家庄市| 天峻县| 安丘市| 合山市| 夏河县| 迭部县| 松桃| 葫芦岛市| 犍为县| 开江县| 保靖县| 崇阳县| 天峨县| 吉隆县| 虞城县| 盱眙县| 文昌市| 江川县| 浮梁县| 广安市| 宁强县| 张家港市| 鄂托克旗| 永安市| 青川县| SHOW| 茂名市| 昌图县| 日土县| 松江区| 岱山县| 乡城县| 永定县|