2014-09-10 36 views
-2

我需要使用大字符串作为关键字的大地图。有没有办法通过默认的map指定比较测试,以便将密钥视为地址?如果没有,是否有很好的库来实现它?去参考地图,通过提领比较

请注意,我想要防止的是长字符串不断地通过副本传递,每当进行地图查找时。

+0

字符串不会通过复制传递,而是始终由大小与字符串大小无关的“引用”传递。还要注意,字符串比较通过检查两个字符串是否具有相同的地址开始。 – 2014-09-10 20:22:12

+0

在一般情况下如何。说我有一个我想散列的自定义BigFloat类。 – erjoalgo 2014-09-10 20:24:11

+0

不成熟的优化... – Volker 2014-09-10 20:24:46

回答

2

对于字符串的特殊情况,Go在默认情况下做了你想要的:strings are currently represented by pointer/length pairs因此,当你复制字符串时你并没有复制字符串数据。

通常,您不能指定自定义比较(或散列)函数。其他类型和自定义结构are treated according to rules listed in the spec:指针通过地址进行比较,例如,固定大小的数组通过值进行比较,并且切片类型通常不具有可比性,因此包含它们的结构类型不能用作映射关键字类型。