为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的容器类型

Go中的容器类型

Go
摇曳的蔷薇 2021-05-12 21:46:44
我试图使自己熟悉Go,因此尝试实现一些搜索功能,但在文档中查找容器类型,没有一个内置类型实现contains方法。我是否缺少某些东西,如果没有,我该如何进行会员资格测试?我必须实现自己的方法还是必须遍历所有元素。如果是这样,那么针对容器类型省略此基本方法的理由是什么?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

使用容器/列表包,您可以编写自己的循环来搜索内容。软件包中未提供此功能的原因可能就像Dystroy所说的那样,将隐藏O(n)操作。


您无法添加方法,因此只需编写一个循环。


for e := l.Front(); e != nil; e = e.Next() {

    data := e.Value.(dataType) // type assertion

    if /* test on data */ {

        // do something

        break

    }

}

它很简单,并且O(n)的复杂性很明显。


在Go附带的支持搜索的数据结构的回顾中,请不要错过sort包。那里的函数允许切片以O(n log(n))排序,然后以O(log(n))时间进行二进制搜索。


最后,正如Daniel所建议的,请考虑使用第三方软件包。对于容器类型,有一些流行和成熟的软件包。


查看完整回答
反对 回复 2021-05-24
  • 3 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号