首页 > 后端开发 > Golang > 如何使用自定义类型作为 Go Map 中的键?

如何使用自定义类型作为 Go Map 中的键?

Susan Sarandon
发布: 2024-12-12 13:57:10
原创
186 人浏览过

How Can I Use Custom Types as Keys in Go Maps?

Go Map 的自定义键和相等

在 Go 中,映射使用严格相等来比较键。这意味着要使用自定义类型作为映射键,它必须实现标准相等运算符 (==)。但是,有一些解决方法可以解决此限制。

使用派生键

不要直接使用结构体实例作为键,而是考虑使用派生属性作为标识实例。该属性本质上应该可用作键并且具有所需的相等语义。常见选项包括整数哈希码或字符串表示形式。

type Key struct {
  a *int
}

func (k *Key) HashKey() int {
  return *(*k).a
}

k1, k2 := Key{intPtr(1)}, Key{intPtr(2)}
m := map[int]string{}
m[k1.HashKey()] = "one"
m[k2.HashKey()] = "two"
登录后复制

注意: 确保派生键仅在真正表示语义同一性时发生冲突至关重要。修改派生密钥中的字段会使其作为密钥无效,因为其身份已更改。

以上是如何使用自定义类型作为 Go Map 中的键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板