考虑以下示例:package mainimport ( "fmt" "sort")func main() { var n int var a sort.IntSlice a = append(a, 23) a = append(a, 3) a = append(a, 10) sort.Sort(a) fmt.Println(a) n = sort.SearchInts(a, 1) fmt.Println(n) n = sort.SearchInts(a, 3) fmt.Println(n)}http://play.golang.org/p/wo4r43Zghv结果是:[3 10 23]00当第一个元素和不存在的元素都返回0作为索引时,我应该如何知道切片中是否存在数字?更新 注意,索引也可以大于切片的长度,因此查找切片中是否存在元素的正确方法是:num := 1n = sort.SearchInts(a, num) if n < len(a) && a[n] == num { // found}
3 回答
慕仙森
TA贡献1827条经验 获得超7个赞
它在功能上可能看起来很奇怪,但已记录在案:
例如,给定切片数据按升序排序,则调用Search(len(data),func(i int)bool {return data [i]> = 23})返回最小索引i,使得data [i]> = 23。
显而易见的解决方案也记录在案:
如果调用方想查找切片中是否包含23,则它必须分别测试data [i] == 23。
- 3 回答
- 0 关注
- 318 浏览
添加回答
举报
0/150
提交
取消