类型别名
Go v1.9 引入了类型别名之后,使代码重构变得更轻松。
设想您的foo
包中有可导出类型Bar
。您想把类型Bar
重命名为NewBar
。
当您重命名类型时,如果没有类型别名,您必须同时将所有包里凡是用到foo.Bar
的地方都改为foo.NewBar
。
利用类型别名,您可以将这个过程分为2个步骤。
第一步,您可以先为foo.Bar
引入一个别名,然后用别名去替换所有用到foo.Bar
的地方。
第二步,修改foo.Bar
为foo.NewBar
,然后更新别名。
这个改变就小多了。
现在,您就可以逐步摆脱别名,并直接使用foo.NewBar
类型。
这个过程听起来很麻烦,但在大型代码库中,它可能是比一次性重命名所有代码更好的选择。
用类型别名干其他事情也很具诱惑力,但您应该抵制住诱惑。
类型别名添加了一个间接层,这会影响代码的可读性,您应该有充分的好理由时才去使用它。
要了解更多,请阅读别名提案。
最后更新于