gpt4 book ai didi

go - 类型声明中的匿名字段?

转载 作者:IT王子 更新时间:2023-10-29 02:05:35 26 4
gpt4 key购买 nike

我遇到了这个类型声明:

type Handler func(*Conn)

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

(这是 https://github.com/golang/net/blob/38c17adf51120973d1735785a7c02f8ce8297c5e/websocket/server.go#L55-L66 的简化版本

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

这是类型声明的语法(https://golang.org/ref/spec#Type_declarations):

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

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

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

最佳答案

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

匿名字段通常用于 embedding .在您的示例中,Server 将像 Handler 一样工作,因为它嵌入了该字段。

关于go - 类型声明中的匿名字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com