Go语言的结构体

概述

与C相同,Go的结构体是零个或多个任意类型的命名变量组合在一起的聚合数据类型,每个变量叫做结构体的成员。结构体的每个成员都通过点号来访问。

定义结构体时,成员通常一行写一个,但相同类型的成员也可以写在同一行上。但需要注意的是:成员的顺序对于结构体同一性很重要,如果我们将变量的定义顺序调换或者将本来单行定义的变量写成同一行(或反之),那么我们就会定义一个不同的结构体类型。

命名结构体类型不可以定义一个拥有相同结构体类型的成员,也就是一个聚合类型不可以包含它自己(对数组也同样适用)。但结构体s可以包含一个s类型的指针,即*s。

初始化结构体有两种方式,一种不需指明成员,但要求按照正确的顺序为每一个成员指定一个值。这种方式会给开发和阅读代码的人增加负担,因为他们必须记住每个成员的顺序,另外这也使得未来结构体成员扩充或者重新排列的时候代码维护性差。所以这种格式一般用在定义结构体类型的包中或者一些有明显成员顺序约定的小结构体中。第二种方式需要指明成员名称来初始化,但可以只初始化部分成员,未指明的成员则会自动初始化为对应类型的默认值。

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{0, 1} // v := Vertex{X:0, Y:1}
    fmt.Println(v.X, v.Y)
}

结构体嵌套和匿名成员

G

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值