考虑以下示例: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条经验 获得超8个赞
它在功能上可能看起来很奇怪,但已记录在案:
例如,给定切片数据按升序排序,则调用Search(len(data),func(i int)bool {return data [i]> = 23})返回最小索引i,使得data [i]> = 23。
显而易见的解决方案也记录在案:
如果调用方想查找切片中是否包含23,则它必须分别测试data [i] == 23。
- 3 回答
- 0 关注
- 369 浏览
添加回答
举报
0/150
	提交
		取消
	