go struct 使用

没有任何的私有、公有关键字, 通过大小写来实现(大写开头的为公有,小写开头的为私有),方法也同样适用这个原则。

记住 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 (接受者的类型) 函数名 (参数) (返回值)

结构体的方法,可以跟随 匿名字段一起被继承

没有任何的私有、公有关键字,通过大小写来实现(大写开头的为公有,小写开头的为私有),方法也同样适用这个原则。

猜你喜欢

转载自blog.csdn.net/qq_43373608/article/details/107217367