我想知道Go中的“ struct {}”和“ struct {} {}”是什么意思?示例如下:
array[index] = struct{}{}
要么
make(map[type]struct{})
struct
是Go中的关键字。它用于定义结构类型,结构类型是命名元素的序列。
例如:
type Person struct {
Name string
Age int
}
的struct{}
是一个struct
具有零个元素类型。通常在不存储任何信息时使用。它具有大小为0的优点,因此通常不需要内存来存储type值struct{}
。
struct{}{}
另一方面是复合文字,它构造一个类型的值struct{}
。复合文字构造用于类型的值,例如结构,数组,映射和切片。它的语法是大括号后跟元素的类型。由于“空”结构(struct{}
)没有字段,因此元素列表也为空:
struct{} {}
| ^ | ^
type empty element list
作为示例,让我们在Go中创建一个“集合”。Go没有内置的集合数据结构,但是它具有内置的映射。我们可以将地图用作集合,因为一张地图最多只能有一个具有给定键的条目。并且由于我们只想将键(元素)存储在地图中,因此我们可以将地图值类型选择为struct{}
。
包含string
元素的地图:
var set map[string]struct{}
// Initialize the set
set = make(map[string]struct{})
// Add some values to the set:
set["red"] = struct{}{}
set["blue"] = struct{}{}
// Check if a value is in the map:
_, ok := set["red"]
fmt.Println("Is red in the map?", ok)
_, ok = set["green"]
fmt.Println("Is green in the map?", ok)
输出(在Go Playground上尝试):
Is red in the map? true
Is green in the map? false
请注意,但是,bool
在从地图创建集合时,将其用作值类型可能更方便,因为检查元素是否在其中的语法更简单。
问题内容: package main 我想读入 我已经问了几个相关问题。 我已经阅读了一些文章和帖子,但仍然找不到解决方法。 问题答案: 我认为您正在以错误的方式进行操作。如果要使用C库,则可以使用C库读取文件。 不要纯粹使用cgo来拥有结构定义,您应该在Go中自己创建它们。然后,您可以编写适当的编组/解组代码以从原始字节读取。 快速的Google显示,有人已经完成了将相关C库的外观转换为Go所需
问题内容: 假设我有以下结构: 如果我将该结构作为对象 如果我将此对象设置为nil 它不起作用,实际上是类型分配错误,但适用于映射和切片。那么,我将如何删除该对象(即取消分配)呢?我查看了内置的delete文档,但它从给定的映射中删除了一个条目。谢谢。 问题答案: Go是一种垃圾收集语言。您不应该这样做,也不能从内存中删除对象。这样做是垃圾收集器的 职责 和 责任 ,并且它是 自动执行的 。当对象
struct Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。例如,我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。如下代码所示: type person struct { name string age int } 看到了吗?声明一个struct如此简单,上面的类型包
此函数用于定义类型的结构对象,该结构对象由defstruct操作创建。 语法 (Syntax) 以下是语法。 (struct structname values) Parameters - 'structname'是要赋予结构的名称。 'values'是需要分配给结构的键值的值。 Return Value - 返回一个struct对象,其值映射到结构的键。 例子 (Example) 以下程序显示
准确地讲,Python没有专门处理字节的数据类型。但由于str既是字符串,又可以表示字节,所以,字节数组=str。而在C语言中,我们可以很方便地用struct、union来处理字节,以及字节和int,float的转换。 在Python中,比方说要把一个32位无符号整数变成字节,也就是4个长度的str,你得配合位运算符这么写: >>> n = 10240099 >>> b1 = chr((n & 0
准确地讲,Python没有专门处理字节的数据类型。但由于b'str'可以表示字节,所以,字节数组=二进制str。而在C语言中,我们可以很方便地用struct、union来处理字节,以及字节和int,float的转换。 在Python中,比方说要把一个32位无符号整数变成字节,也就是4个长度的bytes,你得配合位运算符这么写: >>> n = 10240099 >>> b1 = (n & 0xff