没有任何的私有、公有关键字, 通过大小写来实现(大写开头的为公有,小写开头的为私有),方法也同样适用这个原则。
记住 struct 中的字段尽量都是用大写字母开头,否则的话, 在进行反射操作 reflect 时会造成外部无法访问到变量内容的故障, 并且编译器不会提示
一个简单的工人类型
type worker struct{ Name string WorkNO string }
简单工人类型的初始化操作
// 只是进行初始化,不对结构体进行赋值 var oneworker worker // 按照字段名称来进行初始化 //这样不需要遵守 定义字段时的顺序 Oneworker := worker{ "Name": "kiki" ,"WorkNo":"20200619" } //按照定义字段时候的顺序来进行初始化 Oneworker := worker{“kiki”,“20200619”}
匿名字段
一个简单的 经理 类型: 包含工人的所有特征,但是还拥有工人没有的字段名称
type manager struct{ worker position string // 职位 }
此时manager 不仅仅包含 position 的属性, worker 结构体的所有字段
初始化的时候也可以直接按照 worker 来初始化,并添加 position 属性
Onemanager := manager{ worker{“kiki”,“20200619”} , “ceo” }
字段重载
当 两个 结构体的字段名称冲突时遵守外层访问优先原则
// struct 的 方法 type Box struct { Width string Height string Depth string Color string } // 当不需要修改 box 的值的时候,使用 Box func (b Box) Volume() float64 { return b.Width * b.Height * b.Depth } // 当需要修改值得时候 采用 * point 指针进行访问 func (b *Box) SetColor(c Color) { b.Color = c }
func (接受者的类型) 函数名 (参数) (返回值)
结构体的方法,可以跟随 匿名字段一起被继承
没有任何的私有、公有关键字,通过大小写来实现(大写开头的为公有,小写开头的为私有),方法也同样适用这个原则。