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 关注
- 188 浏览
添加回答
举报