通过引用去映射键,通过解除引用进行比较

时间:2014-09-10 20:16:25

标签: go

我需要使用带有大字符串的大型地图作为键。 go的默认map是否有一种方法可以指定比较测试,以便将密钥视为地址?如果没有,是否有很好的库来实现这个?

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

1 个答案:

答案 0 :(得分:2)

对于字符串的特殊情况,Go默认执行您想要的操作:strings are currently represented by pointer/length pairs因此您在复制字符串时不会复制字符串数据。

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