go语言学习--系统类型
- 自定义类型
- type xxx struce{
name string
age int
}
- 自定义变量声明
- var xx user //声明并初始化为零值
- xx := user{ //声明并初始化所有字段
name : "Bob",
age : 10,
}
字段名与值用“:”分隔,不同字段使用“,”分隔,且需要“,”结束,对字段顺序没有要求
- xx := user{
"Lisa",12
}
不写字段名,直接初始化值,字段顺序必须与类型定义时的字段顺序一致。
- 类型转换
- golang编译器不会对不同类型的值做隐式转换,几遍两个类型互相兼容,也不能相互赋值。
- 类型的本质
- 新类型声明方式
- 创建新值:使用值接收者声明方法
- 修改当值:使用指针接收者声明方法
- 值传递
- 按值传递(数据副本)
- 按指针传递(数据共享)
- 内置类型
- 数值类型(int,double,float)
- 字符串类型(string)
- 布尔类型(bool)
- 引用类型
每个引用类型的变量都包含一个纸箱底层数据结构的指针
- 切片
- 映射
- 通道
- 接口
- 函数
- 字符串(从技术细节上说)
- 结构类型
结构类型可以用来描述一组数据值
- 方法
- 方法能给自定义的类型添加行为
- 方法实际上也是函数,在关键字func和方法名之间增加了一个参数(接收者)
- 接收者
- 值接收者
- 使用类型值的副本参与运算,不影响使用该变量的其他函数
- 指针接收者
- 使用类型变量的地址参与运算,会影响其他使用该变量的地方
- 指针接收者可以调用值接收者声明的方法
- 接口
接口是用来定义行为的类型。
- 方法集
方法集定义了一组关联到给定类型的值或者指针的方法。定义方法时使用的接收者类型决定了这个方法关联到值还是关联到指针,或者两个都关联
- 多态
多态是指代码可以根据类型的具体实现采取不同的行为的能力。
- 嵌入类型
嵌入类型是将已有的类型直接声明在新的结构类型中。
被嵌入的类型被称为新的外部类型的内部类型
外部类型拥有内部类型相关的所有标识符(字段或方法)(类似JAVA继承)。
外部类型可以通过声明同名的标识符来覆盖内部类型的标识符(字段或方法)
相关文章