Go struct

定义结构体类型

type XXX struct{
// 结构体字段 == 属性 == field
}

申明定义结构体

指针式申明
var personP *Person = new(Person)
var personP *Person =  &Person{}
引用式申明(引用是一个变量的别称)
var s Person
var s Person = Person()

访问结构体的值

//如果是指针的话需要使用(*XXX)括起来
//如本身就是一个结构本身的话直接通过 . 运算符就可以访问了
// . 运算符的优先级比 * 的高

序列化和反序列化

// 为了方便使用序列化和反序列化,我们在使用struct对的时候,可以在字段的旁边写上一个tag
type Person struct {
	name string `json:"name"`
	age  int8   `json:"age"`
}

结构体定义方法

普通的定义在结构体里面
type Person struct {
	name string `json:"name"`
	age  int8   `json:"age"`
        action func(){}
}
定义在结构体外面
type Person struct {
	name string `json:"name"`
	age  int8   `json:"age"`
}

func(p Person) showPerson(){
} // 注意这里的 p Person的位置,既不是返回值的位置,也不是参数的位置,他明确表明了 Person struct 和showPerson 的关系