我了解结构嵌入
type newType struct {someStruct}
我知道类型别名:
go type newType = someStruct
但是有没有实际的使用理由
type newType someStruct
原始类型呢?
type newType int
这种定义的正确名称是什么?
答案 0 :(得分:4)
命名:所有代码段均为 type declarations 。声明之一是 type alias (带有=的声明)。其余声明为 type definitions 。这些定义中的第一个使用带有嵌入式字段的结构。
代码type newType someStruct
在需要定义一种与其他结构类型具有相同内存布局的新类型时很有用。这可能是因为程序员想要在相同的内存布局上使用不同的方法。
代码type newType int
对于定义与int
具有语义差异的类型或将方法附加到原始类型很有用。有关示例,请参见reflect.Kind。
答案 1 :(得分:0)
结构嵌入与“混叠”
您正在将不同的构造混为一谈。
有关结构嵌入的定义,请参见The Go Programming Language Specification。
以下是Go类型别名的解释和依据。
Go 1.9 Release Notes(发布于2017/08/24)
Go现在支持类型别名以支持渐进式代码修复,而 在包之间移动类型。 type alias design document 和an article on refactoring详细介绍了该问题。在 简而言之,类型别名声明的格式为:
type T1 = T2
此声明引入了别名
T1
-另一个别名 拼写-由T2
表示的类型;即T1
和T2
表示相同的类型。