为了账号安全,请及时绑定邮箱和手机立即绑定

类型声明中的匿名字段?

类型声明中的匿名字段?

Go
慕桂英3389331 2021-09-10 21:29:26
我遇到了这种类型声明: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 .它显然需要一个标识符名称。但是我引用的包含语法的部分也提到了匿名字段。我不明白为什么这种语法是正确的以及如何使用匿名字段。
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您想查看与结构有关的语法部分,而不仅仅是类型。请参阅:结构类型和AnonymousField. 只看制作TypeSpec是把注意力集中在错误的地方。相反,看看FieldDecl; 语法表明我们有两种可能性:命名字段 ( IdentifierList Type) 或匿名字段 ( AnonymousField)。

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


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信