如何使用 Go 的 type alias 来提升代码可读性。
对于这样一个 map:
var m map[string]any
你并不知道它的 key 代表什么。你可以给 string
一个类型别名(type alias):
type Region = string
var m map[Region]any
就可以很直观地看出,m
的 key 代表的是一个地域(Region)。
Go 里面有两种很像的跟类型相关的声明:
// RegionT1 仅是一个类型别名(type alias)而不是一种新的类型。它会被编译器认为就是 string 类型。
type RegionT1 = string
// RegionT2 是一个新的类型(通过类型声明,type declaration)。它可以跟 string 互转。
type RegionT2 string
是否是新的类型,影响主要在于能否给类型定义方法。对于 RegionT1
,你无法给它定义方法,因为你无法给内置的 string 类型的增加方法。对于 RegionT2
,可以给它定义方法。
如果仅是为了增加代码可读性,建议使用 type alias 而不是 type declaration,可以减少引入的新类型。
另外,type alias 被发明的初衷是用来做 代码重构 的。但我认为它也适用于提升可读性的场景。