写在前面
本文主要讲一下type的两种用法
定义新类型
type
可以定义新类型,包括结构体、接口、函数、通道等
type Person struct {
Name string
Age int
}
type Reader interface{
Read() ([]byte, error)
}
type MiddlewareFunc func(ctx context.Context, next Handler) error
type IntChan chan int
定义别名
type
还可以定义别名
type PersonType = Person
注意
type PersonType = Person
这种方式定义的别名跟原类型是一模一样的,是同一个类型,没有任何区别
type PersonType Person
这种方式是将Person类型重新定义了一个新类型PersonType,这2个类型没有任何相关性,是两个不同的类型。这2个类型的变量不能直接赋值,但是可以通过类型转换赋值。并且PersonType只有Person的属性,没有方法
别名的作用
- 提高代码可读性:通过定义类型别名,可以让代码的意图更加明确和易于理解。例如,使用
type IntList []int
可以清晰地表明IntList
是一个int
类型的切片,而不是一个普通的int
类型变量。 - 简化代码:类型别名可以让代码更加简洁明了,避免了重复定义一些类型的繁琐过程。例如,使用
type MyFunc func(int) bool
可以简化一些函数的定义,使得代码更加紧凑。 - 保持兼容性:使用类型别名可以让代码更加灵活,方便后续对类型的修改和调整。例如,在一个项目中,如果需要将某个类型更换为另一个类型,可以通过修改类型别名的定义,而不必对项目中的所有代码都进行修改,从而提高了代码的可维护性和兼容性。
总之,类型别名是一种非常有用的语言特性,可以使得代码更加清晰、简洁、易于维护和兼容。