【发布时间】:2014-11-04 15:04:30
【问题描述】:
我需要使用带有大字符串的大地图作为键。 go 的默认map 中有没有办法指定比较测试,以便将密钥视为地址?如果没有,是否有很好的库可以实现这一点?
请注意,我要防止的是,每当进行地图查找时,长字符串会不断通过副本传递。
【问题讨论】:
-
字符串不是通过副本传递的,总是通过大小与字符串大小无关的“引用”传递。另请注意,字符串比较首先检查两个字符串是否具有相同的地址。
-
一般情况下怎么样。假设我有一个要散列的自定义 BigFloat 类。
-
过早优化...
-
您无法指定测试或哈希函数,但如果您想要 (play.golang.org/p/4kYzKFoqZn) 并且如 dystroy 所说的字符串,您可以将地址本身用作键以及其他一些类型,例如接口值,是内部包含对大量数据的引用的小结构。
-
由于所有这些 cmets 似乎或多或少地回答了原始问题,因此将摘要发布为社区 wiki 答案。
标签: go