怎样做网站的二维码,淮南app,简述电子商务网站的建站流程,网站建设p2pGo sort 包主要提供了三种排序能力#xff1a; #xff08;1#xff09;基本类型切片排序#xff1b; #xff08;2#xff09;任意类型切片排序 #xff1b; #xff08;3#xff09;任意数据结构排序 (实现接口方法排序)
一、基本类型切片排序
为了便于对常用数据…Go sort 包主要提供了三种排序能力 1基本类型切片排序 2任意类型切片排序 3任意数据结构排序 (实现接口方法排序)
一、基本类型切片排序
为了便于对常用数据类型的操作sort 包提供了对 []int切片、[]float64切片 和 []string 切片的排序支持。 切片排序
sort.Ints(sli)
sort.Float64s(sli1)
sort.Strings(sli2)实现
package mainimport (fmtsort
)
func main() {sli : []int{6, 568, 566, 484, 55}sort.Ints(sli)fmt.Printf(sli: %v\n, sli)sli1 : []float64{6.62, 568.54, 25.566, 484.2, 55.2}sort.Float64s(sli1)fmt.Printf(sli1: %v\n, sli1)sli2 : []string{aa, bb, AA}sort.Strings(sli2)fmt.Printf(sli2: %v\n, sli2)
}二、任意类型的切片排序(如结构体)
包内代码
func Slice(x any, less func(i, j int) bool) {rv : reflectlite.ValueOf(x)swap : reflectlite.Swapper(x)length : rv.Len()limit : bits.Len(uint(length))pdqsort_func(lessSwap{less, swap}, 0, length, limit)
}实现
package mainimport (fmtsort
)type student struct {name stringage inthav int
}func main() {//二、任意类型切片排序(如结构体)a : student{aa, 32, 120}b : student{bb, 65, 100}c : student{cc, 54, 130}d : student{dd, 814, 62}fmt.Println(a, b, c, d)ss : []student{a, b, c, d,}sort.Slice(ss, func(i, j int) bool { //切片比较 排序return ss[i].age ss[j].age})for _, v : range ss { //按行打印fmt.Printf(v: %v\n, v)}}
三、任意数据结构排序 (实现接口方法排序)
包内代码
type Interface interface {Len() intLess(i, j int) boolSwap(i, j int)
}
type StringSlice []string
func (x StringSlice) Len() int { return len(x) }
func (x StringSlice) Less(i, j int) bool { return x[i] x[j] }
func (x StringSlice) Swap(i, j int) { x[i], x[j] x[j], x[i] }func Sort(data Interface) {n : data.Len()if n 1 {return}limit : bits.Len(uint(n))pdqsort(data, 0, n, limit)
}
func Stable(data Interface) {stable(data, data.Len())
}实现
package mainimport (fmtsort
)type person struct {name stringage intheight int
}
type stringperson []person//实现sort.Interface 接口方法func (x stringperson) Len() int { return len(x) }
func (x stringperson) Less(i, j int) bool {if x[i].age x[j].age { //先以年龄作比较return true}return x[i].height x[j].height //年龄一样的再比身高}
func (x stringperson) Swap(i, j int) { x[i], x[j] x[j], x[i] }func main() {sperson : []person{ //person结构类型的切片{aa, 3, 54},{aa, 2, 54},{aa, 6, 54},{aa, 3, 52},{aa, 12, 15},}sort.Stable(stringperson(sperson))// sort.Sort(stringperson(sperson))fmt.Printf(sperson: %v\n, sperson)
}//返回
//sperson: [{aa 12 15} {aa 6 54} {aa 3 54} {aa 3 52} {aa 2 54}]
-----------end