🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 类型别名 类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型。 语法结构如下: ```go type TypeAlias = Type ``` 我们之前见过的rune和byte就是类型别名,他们的定义如下: ```go type byte = uint8 type rune = int32 ``` ## 自定义类型 在Go语言中有一些基本的数据类型,如`string`、`整型`、`浮点型`、`布尔值`等数据类型, Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如: ```go // 将MyInt定义为int8类型 type MyType int8 ``` 通过type关键字的定义, MyType 就是一种新的类型,它具有int的特性。 ## 类型定义和类型别名区别 类型别名与类型定义表面上看只有一个等号的差异,我们通过下面的这段代码来理解它们之间的区别。 ```go package main import "fmt" // 自定义类型 type CustomInt8 int8 // 类型别名 type int8Alias = int8 func main() { var a CustomInt8 var b int8Alias fmt.Printf("a type is: %T\n", a) fmt.Printf("b type is: %T\n", b) } // 运行结构 // a type is: main.CustomInt8 // b type is: int8 ``` 结果显示a的类型是 `main.CustomInt8` ,表示main包下定义的 CustomInt8 类型。b的类型是int8。 int8Alias 类型只会在代码中存在,编译完成时并不会有 int8Alias 类型。