Golang使用sort介面實現排序

2021-10-02 17:41:07 字數 1394 閱讀 9796

為實現對自定義的struct進行排序,可以呼叫sort包中的sort方法,為此,自定義的struct集合需要實現len()、less()、swap()三項方法。

官方文件中的描述為:

func sort(data inte***ce)

sort排序data。它呼叫1次data.len確定長度,呼叫o(n*log(n))次data.less和data.swap。本函式不能保證排序的穩定性(即不保證相等元素的相對次序不變)。

以學生struct為例進行實現:

package domain

import

"strconv"

type student struct

type studentlist [

]student

func

(slist studentlist)

newlist

(list [

]student)

*studentlist

return

&slist

}func

(slist studentlist)

string()

string

return str

}func

(slist studentlist)

len(

)int

func

(slist studentlist)

less

(i, j int

)bool

func

(slist studentlist)

swap

(i, j int

) stu2 := domain.student

stu3 := domain.student

stu4 := domain.student

list :=

make([

]domain.student,4)

list =

domain.student

var slist domain.studentlist

mylist := slist.

newlist

(list)

//reverse := sort.reverse(mylist)

sort.

sort

(mylist)

fmt.

println

(mylist)

}

這樣實現的是公升序排序,若要實現降序排列,可以在重寫介面的less()方法中更改比較運算子,或者如上述**通過reverse包裝乙個inte***ce介面並返回乙個新的inte***ce介面,對該介面排序可生成遞減序列。

golang排序實現 sort介面實現

今天看見群裡再討論排序的sort.inte ce的實現,有童鞋一直搞不定,我就上手了一下,哦耶搞定了,放在這裡.其實很簡單sort.inte ce藉口有三個方法,給自己的struct實現這三個方法,然後用將自己的結構體傳給sort.sort方法就排序完成.當然sort包也有幾個常用的方法sort.f...

golang 使用 sort 來排序

golang sort package sort 操作的物件通常是乙個 slice,需要滿足三個基本的介面,並且能夠使用整數來索引 a type,typically a collection,that satisfies sort.inte ce can be sorted by the routi...

golang 使用 sort 來排序

golang 使用 sort 來排序 golang sort package sort 操作的物件通常是乙個 slice,需要滿足三個基本的介面,並且能夠使用整數來索引 a type,typically a collection,that satisfies sort.inte ce can be ...