Go 类型声明中的匿名字段?

Go 类型声明中的匿名字段?,go,Go,我遇到了这种类型声明: type Handler func(*Conn) type Server struct { Handshake func(*Config, *http.Request) error Handler } (这是 服务器结构中的第二个字段是匿名的。只有类型,没有名称 以下是类型声明()的语法: 它显然需要一个标识符名称,但我引用的包含语法的部分也提到了匿名字段 我不明白为什么这个语法是正确的,以及匿名字段是如何使用的。您想看看语法中与结构有关的部分,而不仅仅是类型

我遇到了这种类型声明:

type Handler func(*Conn)

type Server struct {
  Handshake func(*Config, *http.Request) error
  Handler
}
(这是

服务器
结构中的第二个字段是匿名的。只有类型,没有名称

以下是类型声明()的语法:

它显然需要一个标识符名称,但我引用的包含语法的部分也提到了匿名字段


我不明白为什么这个语法是正确的,以及匿名字段是如何使用的。

您想看看语法中与结构有关的部分,而不仅仅是类型。请参阅:
AnonymousField
的使用。只看
TypeSpec
的产品,会把注意力集中在错误的地方。相反,请看在
FieldDecl
;语法显示我们有两种可能:命名字段(
IdentifierList Type
),或匿名字段(
AnonymousField

匿名字段通常用于。在您的示例中,
服务器
将充当
处理程序
,因为它嵌入了该字段

TypeDecl     = "type" ( TypeSpec | "(" { TypeSpec ";" } ")" ) .
TypeSpec     = identifier Type .