(* DefaultHandler)(nil)是什么意思,其中DefaultHandler是一个结构?

时间:2019-08-07 02:01:29

标签: go

我可以理解整个代码的最后一行的含义:它提供了*DefaultHandler满足EasygateHandler接口的静态(编译时)检查。但是我无法理解(*DefaultHandler)(nil)的含义以及与(*DefaultHandler)()

的区别
type DefaultHandler struct {
    log logrus.FieldLogger
    svc *service.DefaultResolver
}

var _ easygate.EasygateHandler = (*DefaultHandler)(nil)

1 个答案:

答案 0 :(得分:2)

表达式(*DefaultHandler)(nil)是从无类型nil到类型*DefaultHandler的零值的conversion

转换的格式为T(x),其中T是类型,而x是可以转换为类型T的值。在此示例中,T*DefaultHandler,而xnil。需要用*DefaultHandler括起来,以将对指针类型的转换与对非指针类型的转换取消引用区分开。

表达式(*DefaultHandler)()无效的Go语法。

如果&DefaultHandler{}是具有复合文字语法的类型,则也可以使用值DefaultHandler。转换模式适用于所有类型。