1 /*
2
3 结构体变量:
4 结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存,
5 因此必须在定义结构体并实例化后才能使用结构体的字段。
6 type 类型名 struct {
7 字段1 字段1类型
8 字段2 字段2类型
9 …
10 }
11 指针类型的结构体 :new 关键字对类型(包括结构体、整型、浮点数、字符串等)进行实例化,结构体在实例化后会形成指针类型的结构体
12 1 var o *类型名 = new(类型名)
13 2 o := &类型名{}
14 赋值 :
15 1 var o *类型名 = new(类型名){字段1:值}
16 2 o.字段1 = xxx
17 3 p := &struct {// 定义
18 name string
19 }{// 初始化
20 name:"lizi",
21 }
22 结构体方法:
23 1 每个方法只能有一个接收器(分: 非指针类型 和 指针类型 接收器)
24 2 非指针类型接收器: 当方法作用于非指针接收器时,Go语言会在代码运行时将接收器的值复制一份,在非指针接收器的方法中可以获取接收器的成员值,但修改后无效
25 3 指针类型接收器: 指针类型的接收器由一个结构体的指针组成,更接近于面向对象中的 this 或者 self
26 func (接收器变量 接收器类型) 方法名(参数列表) (返回参数) {
27 函数体
28 }
29 例:
30 type ObjectType struct{id int}
31 func (o *ObjectType) SetId(id) int{
32 o.id = id
33 return id
34 }
35 o := new(ObjectType)
36 o.SetId(0)
37 结构内嵌特性:
38 1 内嵌的结构体可以直接访问其成员变量
39 2 内嵌结构体的字段名是它的类型名
40 类型内嵌
41 */
42 package info_struct