概论
- 方法在编译时静态绑定,依托于具体的类型
- 接口对应的方法是在运行时动态绑定
- 进程内初始化顺序 初始化导入包的常量和变量(可以导出的变量)--->包的init函数,不同文件内顺序是未定义的, 同一文件调用顺序是定义顺序--->main包内的常量变量和init---->main函数
函数调用顺序图
函数
方法
- 绑定在具体的类型,编译时静态绑定
- 一个类型绑定的函数实现了接口的所有函数,这个类型就实现了这个接口
- c实现的面向对象只用将相应的类型作为函数第一个参数传入
- 没有传统面向对象的继承,通过组合来实现继承
接口
- 接口可以实现虚函数的多态性,运行时确定,延迟绑定
- 创建一个新的接口类型满足已经存在的具体类型而不用破坏这些类型的原有定义
- 基础类型不支持隐士转换
- 结构体内可以包含接口类型,纯虚函继承
空接口
类 型 |
说 明 |
map |
宕机错误,不可比较 |
切片([]T) |
宕机错误,不可比较 |
通道(channel) |
可比较,必须由同一个 make 生成,也就是同一个通道才会是 true,否则为 false |
数组([容量]T) |
可比较,编译期知道两个数组是否一致 |
结构体 |
可比较,可以逐个比较结构体的值 |
函数 |
可比较 |
类型断言
- x.(T) x是interface()类型, T是要断言的类型
- 使用场景:当某个interface{}的变量真是类型为A时才做某件事
- 相当于赋值给void*的真实类型
|
请发表评论