3 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
sort.SearchInts
只是一種方便的包裝器。搜索
s 的切片。int
它的實現(xiàn)方式如下:
func SearchInts(a []int, x int) int { return Search(len(a), func(i int) bool { return a[i] >= x }) }
因此,您可以創(chuàng)建一個自定義的“”函數(shù),該函數(shù)對參數(shù)執(zhí)行相同的操作:SearchInt8s
int8
func SearchInt8s(a []int8, x int8) int { return sort.Search(len(a), func(i int) bool { return a[i] >= x }) }
或者(正如另一個答案已經(jīng)說過的那樣),只需使用排序。直接搜索
:
sort.Search(len(arrInt), func(i int) bool { return arrInt[i] >= 10 })
請注意,在調(diào)用此命令之前,必須對切片進行排序,因為此系列函數(shù)在已排序的切片中執(zhí)行二進制搜索。

TA貢獻1757條經(jīng)驗 獲得超8個贊
數(shù)組是內(nèi)存中相同大小的項的連續(xù)序列:
Array of int8: [1 byte][1 byte][1 byte][1 byte][1 byte]...
如果我們需要整數(shù)數(shù)組(在amd64中典型為8個字節(jié)),我們有:
Array of int: [8 bytes][8 bytes][8 bytes][8 bytes][8 bytes]...
沒有辦法簡單地從一種類型轉(zhuǎn)換或轉(zhuǎn)換為另一種類型,獲取int數(shù)組的唯一方法是創(chuàng)建一個新的int數(shù)組并將所有值從int8轉(zhuǎn)換為int。
另一方面,如果您只需要在數(shù)組中搜索,則執(zhí)行所有轉(zhuǎn)換都是過度的,則最好的方法是創(chuàng)建一個函數(shù) 。SearchInt8
這是泛型有用的地方,相同的算法將適用于具有相同操作的類型,但Golang缺少泛型。為了獲得這個結(jié)果,golang附帶了一個函數(shù)(https://golang.org/pkg/sort/#Search),該函數(shù)接受該函數(shù)作為第二個參數(shù)來實現(xiàn)您的類型的比較。sort.Search
提醒:要使用搜索函數(shù),數(shù)組應(yīng)該已經(jīng)排序。
- 3 回答
- 0 關(guān)注
- 95 瀏覽
添加回答
舉報