2 回答

TA貢獻1856條經驗 獲得超5個贊
例如,
package main
import (
"fmt"
"sort"
)
func main() {
data := []int{27, 15, 8, 9, 12, 4, 17, 19, 21, 23, 25}
sort.Ints(data)
fmt.Println(data)
x := 9
notpresent := false
i := sort.Search(len(data), func(i int) bool { return data[i] >= x })
if i >= len(data) || data[i] != x {
// x is not present in data,
// but i is the index where it would be inserted.
notpresent = true
}
fmt.Println(x, notpresent)
}
輸出:
[4 8 9 12 15 17 19 21 23 25 27]
9 false

TA貢獻1776條經驗 獲得超12個贊
我也遇到同樣的問題,因為我誤解了godoc sort Search
.
如果調用者要查找切片中是否有 23,則必須單獨測試 data[i] == 23。
我認為這也意味著“文檔說 == 是允許的”。實際上,在sort.Search中作為參數的函數中,只能使用>=
or <=
,不能使用==
。這句話意味著在獲得 index 之后i
,您必須對其進行測試data[i] == 23
以確保 23 在切片中。
- 2 回答
- 0 關注
- 216 瀏覽
添加回答
舉報