Golang:结构嵌入与“别名”

dmz*_*rsk 1 types go

我知道结构嵌入

type newType struct {someStruct}
Run Code Online (Sandbox Code Playgroud)

我知道类型别名:

type newType = someStruct
Run Code Online (Sandbox Code Playgroud)

但是有什么实际的理由可以使用

type newType someStruct
Run Code Online (Sandbox Code Playgroud)

原始类型呢?

type newType int
Run Code Online (Sandbox Code Playgroud)

这种定义的正确名称是什么?

Cer*_*món 5

命名:所有的片段都是类型声明。声明之一是类型别名(带有 = 的声明)。其余的声明是类型定义。这些定义中的第一个使用带有嵌入字段的结构。

type newType someStruct当您想定义一种与其他结构类型具有相同内存布局的新类型时,该代码很有用。这可能是因为程序员想要在相同的内存布局上使用不同的方法。

该代码type newType int对于定义与int原始类型具有语义差异的类型或将方法附加到原始类型非常有用。一个例子见reflect.Kind