Struct 常量值在匿名结构字段中的作用是什么?

Struct 常量值在匿名结构字段中的作用是什么?,struct,go,constants,anonymous,Struct,Go,Constants,Anonymous,给定以下代码: type NodeType int const ( NodeText NodeType = iota NodeAction // etc.. ) type ListNode struct { NodeType } 在ListNodestruct中将NodeType类型包含为匿名字段的解释是什么?它是否用作结构的某种标识符?对于此类匿名或嵌入式字段,根据 非限定类型名用作字段名 在您的情况下,您可以编写以下内容: var node1 ListN

给定以下代码:

type NodeType int

const (
    NodeText NodeType = iota
    NodeAction
    // etc..
)

type ListNode struct {
    NodeType
}
ListNode
struct中将
NodeType
类型包含为匿名字段的解释是什么?它是否用作结构的某种标识符?

对于此类匿名或嵌入式字段,根据

非限定类型名用作字段名

在您的情况下,您可以编写以下内容:

var node1 ListNode
node1.NodeType = NodeText

这三个字段都创建相同的值。

对于此类匿名字段或嵌入字段

非限定类型名用作字段名

在您的情况下,您可以编写以下内容:

var node1 ListNode
node1.NodeType = NodeText


这三个节点创建相同的值。

NodeType
不是常数。它是一种类型,已嵌入到
ListNode
结构中

结构类型能够包含匿名字段或嵌入字段。 这也称为嵌入类型。当我们将类型嵌入到 结构,则类型的名称将用作 嵌入的字段

e、 g.您可以为
列表节点
设置
节点类型
,如下所示:

ln := &ListNode{NodeType: NodeText}
fmt.Println(ln)
// Outputs: &{0}

进一步阅读:(向下滚动)和

节点类型
不是常数。它是一种类型,已嵌入到
ListNode
结构中

结构类型能够包含匿名字段或嵌入字段。 这也称为嵌入类型。当我们将类型嵌入到 结构,则类型的名称将用作 嵌入的字段

e、 g.您可以为
列表节点
设置
节点类型
,如下所示:

ln := &ListNode{NodeType: NodeText}
fmt.Println(ln)
// Outputs: &{0}

进一步阅读:(向下滚动)和

这不是一个“匿名字段”,所使用的语言功能称为“嵌入”,这是一种Go的方式来处理继承。在Go中,如果
StructA
嵌入
StructB
,则
StructB
上的字段和接收类型为
StructB
的方法将可直接在
StructA
上访问。但是,导出与未导出的规则相同(即
StructB
中的未导出字段将无法像正常情况一样在包范围之外访问)。我不能说为什么要在所有结构中使用这个值,这只是一种有效的方法。一天结束时,它只是一个int,你只是通过不给它一个实际的名称来节省几行代码,实际上没有更多。

这不是一个“匿名字段”,所使用的语言功能被称为“嵌入”,这是一种Go解决继承问题的方式。在Go中,如果
StructA
嵌入
StructB
,则
StructB
上的字段和接收类型为
StructB
的方法将可直接在
StructA
上访问。但是,导出与未导出的规则相同(即
StructB
中的未导出字段将无法像正常情况一样在包范围之外访问)。我不能说为什么要在所有结构中使用这个值,这只是一种有效的方法。在一天结束时,它只是一个int,你只是通过不给它一个实际的名称来节省几行代码,实际上没有更多