This question already has an answer here:
Specs: What's the purpose of the blank identifier in variable assignment? [duplicate]
(1个答案)
去年关闭。
我可以理解整个代码的最后一行的含义:它提供了一个静态(编译时)检查,以确保
(1个答案)
去年关闭。
我可以理解整个代码的最后一行的含义:它提供了一个静态(编译时)检查,以确保
*DefaultHandler
满足EasygateHandler
接口。但是我不明白(*DefaultHandler)(nil)
的含义是什么以及(*DefaultHandler)()
的区别是什么type DefaultHandler struct {
log logrus.FieldLogger
svc *service.DefaultResolver
}
var _ easygate.EasygateHandler = (*DefaultHandler)(nil)
最佳答案
表达式(*DefaultHandler)(nil)
是从无类型nil到*DefaultHandler
类型的零值的conversion。
转换采用T(x)
的形式,其中T
是类型,而x
是可以转换为T
类型的值。在此示例中,T
是*DefaultHandler
,x
是nil
。需要在*DefaultHandler
周围加上括号,以区分对指针类型的转换与对非指针类型的转换取消引用。
表达式(*DefaultHandler)()
无效的Go语法。
如果&DefaultHandler{}
是具有复合文字语法的类型,则也可以使用值DefaultHandler
。转换模式适用于所有类型。
关于go - (* DefaultHandler)(nil)是什么意思,其中DefaultHandler是一个结构体? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57386054/
10-10 09:51