类型别名

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 类型。

这个过程听起来很麻烦,但在大型代码库中,它可能是比一次性重命名所有代码更好的选择。

用类型别名干其他事情也很具诱惑力,但您应该抵制住诱惑。

类型别名添加了一个间接层,这会影响代码的可读性,您应该有充分的好理由时才去使用它。

要了解更多,请阅读别名提案

最后更新于