Golang 语法速通指南(八)复合数据结构之结构体
创建结构体
var
Golang 中的结构体和 C++ 中的差别不大,下面是一个例子
1 | type Employee struct { |
一个最显著的区别就是在 C/C++ 中,访问指针成员必须用 ->
,但是 Go 中可以像访问普通变量一样使用点操作符 .
而且在使用结构体指针的时候,不必使用 (*p).x
,直接使用 p.x
即可,Go 会帮你处理的
而且如果你想在函数中修改结构体的话,必须传入指针
使用大写表示可导出也可以算是一个 Go 特色
扯远了,来看下一个创建方式
字面值
1 | type Point struct{ X, Y int } |
这是只按顺序给出值的写法,不常用,只在简单或成员排练比较规则的时候才可能用
下面的方式才是最常用的
1 | type Point struct{ X, Y int } |
因为结构体通常通过指针处理,可以用下面的写法来创建并初始化一个结构体变量,并返回结构体的地址
1 | pp := &Point{1, 2} |
它和下面的语句是等价的
1 | pp := new(Point) |
不过 &Point{1, 2}
写法可以直接在表达式中使用,比如一个函数调用
比较结构体
如果结构体中所有的成员都是可以比较的,那么它就可以使用 ==
或是 !=
来比较
凭借这一点,你可以构造可比较的结构体来作为 map 的键
匿名结构体
评论
GiscusTwikoo