sort.sort(xxlist)可對資料集進行排序,如果是自定義的某種資料結構,就需要重寫len()、swap()、less()這三個方法實現如下的inte***ce介面:
src/sort/sort.go部分原始碼
// sort sorts data.
// it makes one call to data.len to determine n, and o(n*log(n)) calls to
// data.less and data.swap. the sort is not guaranteed to be stable.
func sort(data inte***ce)
// a type, typically a collection, that satisfies sort.inte***ce can be
// sorted by the routines in this package. the methods require that the
// elements of the collection be enumerated by an integer index.
type inte***ce inte***ce
若直接使用內建的intslice、float64slice、stringslice進行對應型別資料的排序,則不需要重寫這三個方法。
實踐如下:
package main
import (
"fmt"
"sort"
)type fruit struct
type fruitlist fruit
/* 重寫父類len()、swap()、less()三個方法 */
func (list fruitlist) len() int
func (list fruitlist) swap(i, j int)
// 如果index為i的元素小於index為j的元素,則返回true,否則返回false
func (list fruitlist) less(i, j int) bool
func main() ,
, ,
} fmt.println(list)
sort.sort(list)
fmt.println(list)
/* 2,以下使用sort包內建好的intslice、float64slice、stringslice分別進行排序,
sort.go中已經實現了len()、swap()、less()三個方法,因此自己不用再實現直接使用 */
// 對自定義int型別陣列以內建的intslice進行排序
arr := int
intlist := sort.intslice(arr)
fmt.println(intlist)
sort.sort(intlist)
fmt.println(intlist)
// 對自定義的float64型別的陣列以float64slice進行排序
arr1 := float64
float64list := sort.float64slice(arr1)
fmt.println(float64list)
sort.sort(float64list)
fmt.println(float64list)
// 對自定義的string型別的陣列進行排序
strlist := sort.stringslice
fmt.println(strlist)
sort.sort(strlist)
fmt.println(strlist)
}
控制台:
[ ]
[ ]
[2 1 6 5 3]
[1 2 3 5 6]
[3.1415926935 2.101 7.999 5.01]
[2.101 3.1415926935 5.01 7.999]
[bc ac abd]
[abd ac bc]
process finished with exit code 0
模仿 Go Sort 排序介面實現的自定義排序
go 語言對於型別的要求非常嚴格,導致我們無法宣告乙個inte ce型別的切片對其排序。所以這裡模仿 go 的 sort 排序擴充套件包,實現對某個特定型別排序的方法。若要實現乙個自定義的排序,就要實現 sort 包的排序介面。要排序的集合必須包含乙個數字型別的索引,所以待排序的資料型別只能是陣列或...
排序sort 排序用法
語法 array sort fun 引數fun可選。規定排序順序。必須是函式。注 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。如果想按照其他規則進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的...
DBMS Job包的用法
dbms job包的用法 包含以下子過程 broken 過程。change 過程。interval 過程。isubmit 過程。next date 過程。remove 過程。run 過程。submit 過程。user export 過程。what 過程。1 broken 過程更新乙個已提交的工作的狀...