类型别名

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