為實現對自定義的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 ...