接口的隐式和显式
Go 隐式接口的特点 只要实现了接口的全部方法,就是自动实现接口; 可以在不修改代码的情况下抽象出新的接口; 一个简单的接口示例 一个接口的值的底层表示 接口数据使用runtime.iface表示; iface记录了数据的地址; iface记录了接口的类型信息和实现的方法(可以用于类型断言); 类型断言 类型断言是一个使用在接口值上的操作; 可以将接口值转换

wxvirus2022年7月18日
小于 1 分钟
go结构体与接口

类型别名和自定义类型

自定义类型

在 Go 语言中有一些基本的数据类型,如stringint、浮点型、布尔等数据类型,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类型


wxvirus2022年5月24日
大约 13 分钟
go接口
接口概念 " 接口定义了一个对象的行为规范,只定义规范不实现 ,由具体的对象来实现规范的细节。接口类型更注重”我能做什么“的问题。在 Go 语言中提倡使用面向接口的编程方式实现解耦。" " 接口定义" 每个接口类型由任意个方法签名组成,接口的定义格式如下: 引入一个段子:《小孩才分对错,大人只看利弊》 案例:写了一个下载器: 表面上这段代码其实确实没啥问题,

wxvirus2022年3月22日
大约 8 分钟