Go 通过引用转到映射键,通过取消引用进行比较

Go 通过引用转到映射键,通过取消引用进行比较,go,Go,我需要使用带有大字符串的大地图作为键。在go的默认map中是否有方法指定比较测试,以便将键视为地址?如果没有,是否有好的库实现了这一点 请注意,我要防止的是,每当进行映射查找时,副本会不断传递长字符串。对于字符串的特殊情况,Go在默认情况下会执行您想要的操作:因此,在复制字符串时,您不会复制字符串数据 通常,不能指定自定义比较(或哈希)函数。其他类型和自定义结构:指针按地址进行比较,例如,固定大小的数组按值进行比较,切片类型通常不可比较,因此包含它们的结构类型不能用作映射键类型。字符串不是通过副

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


请注意,我要防止的是,每当进行映射查找时,副本会不断传递长字符串。

对于字符串的特殊情况,Go在默认情况下会执行您想要的操作:因此,在复制字符串时,您不会复制字符串数据


通常,不能指定自定义比较(或哈希)函数。其他类型和自定义结构:指针按地址进行比较,例如,固定大小的数组按值进行比较,切片类型通常不可比较,因此包含它们的结构类型不能用作映射键类型。

字符串不是通过副本传递的,总是通过大小与字符串大小无关的“引用”传递。还要注意,字符串比较首先检查两个字符串是否具有相同的地址。一般情况下如何。假设我有一个自定义的BigFloat类,我想对它进行散列。过早的优化…你不能指定测试或散列函数,但是如果你想要的话,你可以将地址本身用作键()正如dystroy所说,字符串和一些其他类型(如接口值)在内部都是小结构,包含对大量数据的引用。由于最初的问题似乎或多或少都是由所有这些注释一起回答的,所以发布了一个摘要作为社区wiki的答案。