结构struct

  • Go中的struct与c中的struct非常相似,并且Go没有class
  • 使用typestruct{} 定义结构,名称遵循可见性规则
  • 支持指向自身的指针类型成员
  • 支持匿名结构,可用作成员或定义成员变量
  • 匿名结构也可以用于map的值
  • 可以使用字面值对结构进行初始化
  • 允许直接通过指针来读写结构成员
  • 相同类型的成员可进行直接拷贝赋值
  • 支持 == 与 != 比较运算符,但不支持 > 或 <
  • 支持匿名字段,本质上是定义了以某个类型名为名称的字段
  • 嵌入结构作为匿名字段看起来像继承,但不是继承
  • 可以使用匿名字段指针
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
type human struct{
Sex int
}
//使用组合
//类似继承
type teacher struct {
human
Name string
Age int
}
type student struct {
human
Name string
Age int
}
func main(){
a := teacher{Name:"joe",Age:19,human:human{Sex:0}}
a := student{Name:"joe",Age:20,human:human{Sex:1}}
a.Name = "joe2"
a.Age = 13
a.Sex = 100
}