亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

https://stackoverflow.com/questions/68267991/

https://stackoverflow.com/questions/68267991/

Go
慕田峪7331174 2022-09-12 16:59:03
我有一個問題調用函數sort.SearchInts(arrInt, 10)因為數組 (arrInt) 具有 int8 類型,我需要將數組轉換為 int 類型。我想我可以走很長的路,在for循環中搜索一個元素,但它聽起來很丑陋,我想有更好的方法來做到這一點。
查看完整描述

3 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

sort.SearchInts只是一種方便的包裝器。搜索 s 的切片。int

它的實現方式如下

func SearchInts(a []int, x int) int {    return Search(len(a), func(i int) bool { return a[i] >= x })
}

因此,您可以創建一個自定義的“”函數,該函數對參數執行相同的操作:SearchInt8sint8

func SearchInt8s(a []int8, x int8) int {    return sort.Search(len(a), func(i int) bool { return a[i] >= x })
}

或者(正如另一個答案已經說過的那樣),只需使用排序。直接搜索

sort.Search(len(arrInt), func(i int) bool { return arrInt[i] >= 10 })

請注意,在調用此命令之前,必須對切片進行排序,因為此系列函數在已排序的切片中執行二進制搜索。


查看完整回答
反對 回復 2022-09-12
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

數組是內存中相同大小的項的連續序列:

Array of int8: [1 byte][1 byte][1 byte][1 byte][1 byte]...

如果我們需要整數數組(在amd64中典型為8個字節),我們有:

Array of int: [8 bytes][8 bytes][8 bytes][8 bytes][8 bytes]...

沒有辦法簡單地從一種類型轉換或轉換為另一種類型,獲取int數組的唯一方法是創建一個新的int數組并將所有值從int8轉換為int。

另一方面,如果您只需要在數組中搜索,則執行所有轉換都是過度的,則最好的方法是創建一個函數 。SearchInt8

這是泛型有用的地方,相同的算法將適用于具有相同操作的類型,但Golang缺少泛型。為了獲得這個結果,golang附帶了一個函數(https://golang.org/pkg/sort/#Search),該函數接受該函數作為第二個參數來實現您的類型的比較。sort.Search

提醒:要使用搜索函數,數組應該已經排序。


查看完整回答
反對 回復 2022-09-12
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

sort.Search(len(arrInt), func(i int) bool { return arrInt[i] >= 10 })



查看完整回答
反對 回復 2022-09-12
  • 3 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號