我目前在我的项目中遇到一个问题,我必须找到切片中不存在的数字。我在golang网站上找到了工作代码,效果很好。在我的项目中,我创建了一个空块,并让 else 语句完成所有工作。我尝试更改代码以删除空块,但每次都会出错,我终于找到了一个重现问题的示例:
package main
import (
"fmt"
"sort"
)
func main() {
data := []int{27, 15, 8, 9, 12, 4, 17, 19, 21, 23, 25}
nr := 9
sort.Ints(data)
index := sort.Search(len(data), func(index int) bool { return data[index] == nr })
if index == len(data) {
fmt.Print("It's not in : ")
fmt.Println(nr)
} else {
fmt.Print("It's in! Index is at : ")
fmt.Println(index)
}
}
Run Code Online (Sandbox Code Playgroud)
golang游乐场上的工作代码!
小智 5
我也遇到了同样的问题,因为我误解了godoc sort Search.
如果调用者想要查找 23 是否在切片中,则必须单独测试 data[i] == 23。
我认为这也意味着“文档说 == 是允许的”。事实上,在sort.Search函数中作为参数,只能用>=or <=,不能==。这句话的意思是在获得索引后i,您必须对其进行测试data[i] == 23以确保 23 在切片中。