栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Go中的结构集

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go中的结构集

通常,设置和映射数据结构比将一组值存储在按设置的普通数组或切片中需要更多的内存,并且映射提供有效的附加功能,例如唯一性或通过键检索值。

如果要最小化内存使用量,只需将它们存储在一个切片中,例如

[]Stuff
。如果在多个位置使用值,则仅存储其指针也可能会有利可图,例如
[]*Stuff
,因此,每个存储相同
Stuff
值的位置都可以存储相同的指针(而不必复制值)。

如果您只想存储唯一的struct值,那么在Go中使用来实现确实是最方便的选择

map

没问题

map[Stuff]struct{}
,它可以正常工作。地图密钥类型的要求:

该比较操作符
==和=必须为键类型的操作数被完全定义!; 因此,键类型不能为函数,映射或切片。

Stuff
是一个结构,并且在以下情况下,Go中的结构是可比较的:

如果结构的所有字段都是可比较的,则它们的值是可比较的。如果两个结构值对应的非空白字段相等,则它们相等。

如果您的

Stuff
结构是您发布的结构,则它是可比较的:它仅包含可比较类型的字段
string

还要注意,如果要设置数据结构,则将其

bool
用作值类型(例如
map[Stuff]bool
)和值会更清楚
true
,然后您可以简单地使用索引来测试值是否在映射中,因为索引表达式会产生如果键(在您的情况下)不在地图中,则该值类型
false
为的零值(对于
bool
Stuff
,正确告诉您要查找的值不在“集合”中。(如果它在地图中,则其关联
true
值是索引表达式的结果-
正确地告诉它在地图中)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号