Go中的容器类型

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


摇曳的蔷薇
浏览 243回答 3
3回答

白衣非少年

使用容器/列表包,您可以编写自己的循环来搜索内容。软件包中未提供此功能的原因可能就像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所建议的,请考虑使用第三方软件包。对于容器类型,有一些流行和成熟的软件包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go