包含切片的方法有哪些?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

有没有类似于slice.contains(object)方法,而不必对片中的每个元素进行搜索?

提问于
用户回答回答于

Mostafa已经指出,这样的方法编写起来很简单,MKB为你提供了使用排序包中的二进制搜索的提示。但是,如果你要做很多这样的包含检查,你也可以考虑使用一个映射。

通过使用value, ok := yourmap[key]。因为你对这个值不感兴趣,所以你还可以创建一个map[string]struct{}例如使用空struct{}。这里的优点是它不需要任何额外的空间,并且Go的内部映射类型是针对这种值进行优化的。

用户回答回答于

这种方法不存在,但是编写起来很简单:

func contains(s []int, e int) bool {
    for _, a := range s {
        if a == e {
            return true
        }
    }
    return false
}

如果查找是代码的一个重要部分,则可以使用映射,但是映射也有代价。

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问9 回答
  • 四无君

    0 粉丝0 提问3 回答
  • o o

    3 粉丝490 提问2 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券