Go 隐式接口的特点 只要实现了接口的全部方法,就是自动实现接口; 可以在不修改代码的情况下抽象出新的接口; 一个简单的接口示例 一个接口的值的底层表示 接口数据使用runtime.iface表示; iface记录了数据的地址; iface记录了接口的类型信息和实现的方法(可以用于类型断言); 类型断言 类型断言是一个使用在接口值上的操作; 可以将接口值转换
2022年7月18日
在 Go 语言中有一些基本的数据类型,如
string
、int
、浮点型、布尔等数据类型,Go 语言中可以使用type
关键字来定义自定义类型。
自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct
定义
// 将MyInt定义为int类型
type MyInt int
通过type
关键字的定义,MyInt
就是一种新的类型,它具有int
的特性
var x MyInt = 100
fmt.Printf("x=%T\n", x) // x:main.MyInt
自定义类型是程序员根据自己的需要创造的新类型
type NewInt = int
这个实际上本质还是原来的int
无非就是起了一个小名,别名。比如类型rune
其实就是int32
,还有byte
就是uint8
类型。
实际上就是为了方便理解而存在。
var x NewInt = 100
fmt.Printf("x=%T\n", x) // x:int
类型别名只在源文件中生效,编译完之后,还是会以被替换成原始的
int
类型