Golang 结构体
Golang中的结构是一种用户定义的类型,它允许将可能不同类型的项目分组/组合成一个单一的类型。任何现实世界中的实体都有一些属性/字段,可以用结构来表示。这个概念通常与面向对象编程中的类相比。它可以被称为轻量级的类,不支持继承但支持组合。
例如,一个地址有一个名称、街道、城市、州、Pincode。如下图所示,将这三个属性组合成一个单一的结构地址是有意义的。
声明一个结构
在上面的例子中, type 关键字引入了一个新的类型。它的后面是类型的名称(Address)和关键字struct,以说明我们正在定义一个结构。该结构包含一个大括号内的各种字段的列表。每个字段都有一个名称和一个类型。
注意: 我们也可以通过合并同一类型的各种字段来使其紧凑,如下例所示。
定义一个结构: 声明一个结构的语法。
上面的代码创建了一个地址类型的变量,默认设置为零。对于一个结构,零意味着所有的字段都被设置为相应的零值。因此,姓名、街道、城市、州等字段被设置为””,而Pincode被设置为0。
你也可以使用结构字来初始化结构类型的变量,如下所示。
注意
- 传递字段值的顺序一定要与它们在结构中的声明顺序一致。另外,你不能用上述语法只初始化字段的子集。
- Go也支持使用name: value语法来初始化结构(使用这种语法时,字段的顺序是不相关的)。这允许你只初始化一个子集的字段。所有未初始化的字段都被设置为相应的零值。
例子。
var a = Address{Name:”Akshay”, street:”PremNagar”, state:”Uttarakhand”, Pincode:252636} //city:””
输出
如何访问结构的字段
要访问结构中的单个字段,您必须使用点(.)运算符。
例子
输出
指向结构的指针
Go编程语言或Golang中的指针是一个变量,用来存储另一个变量的内存地址。你也可以创建一个指向结构的指针,如下面的例子所示。
输出
Golang给了我们一个选项,使用emp8.firstName来代替显式的dereference (*emp8).firstName
来访问firstName字段。下面是一个例子来说明这一点。
输出