首页 >后端开发 >Golang >Go 中的 struct{} 和 struct{}{} 有什么区别?

Go 中的 struct{} 和 struct{}{} 有什么区别?

DDD
DDD原创
2024-12-11 05:28:13291浏览

What's the Difference Between `struct{}` and `struct{}{} `in Go?

深入研究 Go 中 struct{} 和 struct{}{} 的本质

Go 利用结构体的概念来定义以下序列:命名元素。虽然 struct{} 和 struct{}{} 可能看起来很相似,但它们具有细微的区别。

struct{}:零大小的空结构

结构{ } 表示没有定义元素的结构。它的存在主要是为了不保存任何数据。其较小的尺寸可以实现高效的内存利用,而不需要额外的空间。

struct{}:空结构的复合文字

相反,struct{}{} 构造struct{} 类型的值。其语法特点是结构体类型后跟空大括号,因为不存在字段。

实践中利用 struct{}:创建集合

Go 本质上缺乏集合数据结构,但地图提供了一个可行的替代方案。通过将映射的值类型定义为 struct{},我们创建了一个仅存储键的集合类似物。此技术保持了地图中键的唯一性。

例如:

var set map[string]struct{}
set = make(map[string]struct{})
set["red"] = struct{}{}
set["blue"] = struct{}{}
_, ok := set["red"]
fmt.Println("Is red in the map?", ok)

地图功能展示键的存在或不存在,模仿设置行为。

以上是Go 中的 struct{} 和 struct{}{} 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn