类型别名主要用于go代码升级、迁移中,类型的兼容性问题。这解决了代码重构中最麻烦的类型名变更问题。
1. 类型定义与类型别名
- 类型定义
写法:
type TypeDef Type
栗子:
type byte uint8
type rune int32
- 类型别名
写法:
type TypeAlias = Type
栗子:
type byte = uint8
type rune = int32
TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型,就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指向他本人。
2. 区分类型定义与类型别名
- 类型别名与类型定义的区别
类型别名与类型定义表面上看只有一个等号的差异,实际的区别有
1)将TypeDef类型定义为Type,TypeDef会形成一种新的类型,TypeDef本身依然具备Type的特性
2)将Type类型别名为TypeAlias,使用时,TypeAlias与Type等效
3)TypeAlias类型只会在代码中存在,编译完成时,不会再有TypeAlias类型
package main
import (
"fmt"
"testing"
)
// 把NewInt类型定义为int
type NewInt int
// 为int取一个别名IntAlias
type IntAlias = int
func main()