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

在 Go 数组中查找的模式

在 Go 数组中查找的模式

Go
HUWWW 2021-07-27 17:56:17
Go 有方便的语法来定义数组查找表:var myTable = [...]string{  'a': "aaaa",  'b': "bbbb",  'z': "zoro",}在某些情况下(键是已知的并且范围不是太大),这是比地图更有效的制作表格的方法。但是,很容易在 map 中进行查找并查找 key 是否不在其中。但是要在这个数组中按索引进行查找,我必须这样做:if index < len(myTable) {  if val := myTable[index]; val != "" {    // here I know index exists in array and val is its value  }}是否有更简单/更常见的模式或库函数来做到这一点?
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

在某些情况下(键是已知的并且范围不是太大)这是制作表格的更有效的方法,而不是映射

是的。您想将您的密钥转换为数组中的偏移量。然后您可以在恒定时间内进行查找。

假设您知道您的所有密钥都在 set 中A-Z。因此,您创建了一个包含 26 个条目的数组。当输入键时,减去“A”的 ASCII 值以将索引放入表中。Boom,恒定时间查找,这将比地图查找快得多。

请注意,您实际上并未将密钥存储在任何地方,它是隐式的。如果你想打印你的表格,你需要自己生成所有的键 ( A-Z)。


查看完整回答
反对 回复 2021-08-02
  • 2 回答
  • 0 关注
  • 271 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信