Go 自定義排序

2021-09-09 08:30:44 字數 1626 閱讀 4116

go語言包中包含了排序包 sort,其中針對一般的strings、int型別已經有了排序方法

sort.

ints

(a [

]int

)sort.

strings

(a [

]string

)

1、分別實現三個函式

func

(p myslice)

len(

)int

func

(p myslice)

less

(i, j int

)bool

func

(p myslice)

swap

(i, j int

)

然後呼叫

sort.

sort

(data sort.inte***ce)

示例如下

package main

import

("fmt"

"sort"

)type mydefslice struct

type myslice [

]mydefslice

func

(p myslice)

less

(i, j int

)bool

func

(p myslice)

len(

)int

func

(p myslice)

swap

(i, j int

)func

main()

)}sort.

sort

(myslice)

fmt.

printf

("myslice: %v\n"

, myslice)

}

執行結果

myslice:

2、呼叫sort.slice並實現less函式

sort.

slice

(slice inte***ce

, less func

(i int

,j int

)bool

)

示例如下

package main

import

("fmt"

"sort"

)type mydefslice struct

type myslice [

]mydefslice

func

main()

)}sort.

slice

(myslice,

func

(i, j int

)bool

) fmt.

printf

("myslice: %v\n"

, myslice)

}

執行結果

myslice:

Go 自定義排序

有的時候我們希望排序不是僅僅按照自然順序排序。例如,我們希望按照字串的長度來對乙個字串陣列排序而不是按照字母順序來排序。這裡我們介紹一下go的自定義排序。an highlighted block package main import sort import fmt 為了能夠使用自定義函式來排序,我...

Go語言自定義包

半天匯入不了,自己寫的包在main.go或者其他go檔案匯入不進去。一直報錯,網上有很多解決辦法,但是大多不是很全面。首先自定義包匯入的時候,包名為包所在的資料夾名。為啥是資料夾名嘞,因為go在build的時候,預設以資料夾名為編譯後的檔名。舉例說明 檔案結構如下 aa main.go,go.mod...

Go 自定義error錯誤

go的error比較靈活.但是自身對error處理的機制有不太好用,我們可以自定義錯誤輸出 只要所有實現了 error 方法的物件都可以,這裡給個比較簡單的demo,後續整理乙個error的優化封裝 package main import fmt type nameemtpyerror struct...