Go类型分类
2020-08-13 12:37:08 0 举报
AI智能生成
参考李文塔Go语言核心编程
作者其他创作
大纲/内容
1. 按照语法定义格式划分
内置类型
简单类型
预声明类型
包括
布尔类型
bool
整数类型
int int8 int16 int32 int64
uint uin8 uint16 uint32 uint64
uintptr
浮点类型
float32
float64
复数类型
complec64
complex128
字符类型
byte
int8的别名
rune
int32的别名
字符串类型
string
接口类型
error
复合类型
类型字面量(type litera())
pointer
array
slice
map
chan
function
interface
struct
type自定义类型
定义格式
type newType oldType
oldType可以是
简单类型
字面量类型
其他type自定义类型
2. 按照能否为类型添加方法划分
命名类型
包括
简单类型
type自定义类型
特点
可以为类型添加方法
未命名类型
包括
字面量类型
特点
不能为类型添加方法
3. 按照抽象和具体划分
接口类型
特定自定义方法集,没有实现的接口类型
接口类型变量一般称“接口变量”
具体类型
接口之外的可以实例化的类型称为具体类型
具体类型一般称为类型实例
4. 其他类型
基础类型
概念
抽象层次类型分类,比如所有函数都归为函数这一种基础类型。
包括
简单类型+字面量类型+unsafePointer
特点
reflect包中定义的Kind的类型常量枚举了这26种类型
从编译器、运行时构建的类型内部数据接口角度划分,不同基础类型,编译器、或者运行时为其构造的数据结构不同
底层数据类型
概念
1. 预声明类型和类型字面量的底层类型都是本身
2. 自定义类型种newType的底层类型逐层递归向下查找
特点
1. 低层数据类型的值可以直接赋值给高层数据类型
2. 拥有相同底层的数据类型间可以使用强制类型转换
动态类型
概念
1. 接口变量内部引用的具体实例的类型称为接口的动态类型
2. 之所以称之为动态类型是因为接口绑定的实例类型可以发生变化
静态类型
概念
静态类型更多的是想读动态类型而言的
reflect.TypeOf()返回的类型信息就静态型类型
0 条评论
下一页