当 DefaultHandler 是一个结构时, (*DefaultHandler)的含义是什么?

*DefaultHandler我可以理解最后一行代码的全部含义:它提供了满足接口的静态(编译时)检查EasygateHandler。但我不明白这是什么意思(*DefaultHandler)(nil)以及有什么区别(*DefaultHandler)()


type DefaultHandler struct {

    log logrus.FieldLogger

    svc *service.DefaultResolver

}


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


慕标琳琳
浏览 112回答 1
1回答

狐的传说

该表达式(*DefaultHandler)(nil)是从无类型 nil 到类型 0 值的转换*DefaultHandler。转换采用以下形式T(x): 是T类型 ,x是可以转换为 类型 的值T。在此示例中,Tis*DefaultHandler和xis nil。*DefaultHandler需要使用括号来区分到指针类型的转换和到非指针类型的转换的取消引用。该表达式(*DefaultHandler)()不是有效的 Go 语法。如果该值是具有复合文字语法的类型,&DefaultHandler{}则也可以使用该值。DefaultHandler转换模式适用于所有类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go