【发布时间】:2019-08-07 02:01:29
【问题描述】:
我可以理解最后一行代码的含义:它提供了一个静态(编译时)检查*DefaultHandler 是否满足EasygateHandler 接口。但是我不明白(*DefaultHandler)(nil)是什么意思,和(*DefaultHandler)()有什么区别
type DefaultHandler struct {
log logrus.FieldLogger
svc *service.DefaultResolver
}
var _ easygate.EasygateHandler = (*DefaultHandler)(nil)
【问题讨论】:
-
表达式
(*DefaultHandler)()不是有效的 Go 代码。 -
@CeriseLimón 是的。用
&DefaultHandler{}有意义,(*DefaultHandler)(nil)的语法是什么? -
表达式
(*DefaultHandler)(nil)是从无类型 nil 到*DefaultHandler类型的 nil 值的 conversion。如果默认处理程序是具有复合文字语法的类型,也可以使用值&DefaultHandler{}。转换模式适用于所有类型。 -
@CeriseLimón 我想知道这个问题是否真的是另一个问题的欺骗。听起来@Jacky 理解空白标识符部分(这是另一个问题的重点),并且更多地询问
(*DefaultHandler)(nil)语法。 -
100% 重复。
标签: go