类型别名与类型定义
在 Go 中,类型声明可以分为两类:别名声明和类型定义。理解这种区别对于理解类型别名(如 durWithoutMethods 和 SameAsDuration)的奇怪行为至关重要。
别名声明
别名声明只是为现有类型创建一个新标识符。这个新标识符可以与原始名称互换。例如,输入 dur = time.Duration 会创建 time.Duration 的别名。使用 dur 和 time.Duration 声明变量会产生相同的行为。
类型定义
相反,类型定义创建新类型。它们从基础类型中剥离了所有方法。这意味着如果定义一个类型 type x struct { y time.Duration },x 将不会继承 time.Duration 的任何方法。这是因为 time.Duration 是原始类型,没有附加方法的类型。
将此应用于示例
以上是Go 中的类型别名和类型定义何时在方法继承中有所不同?的详细内容。更多信息请关注PHP中文网其他相关文章!