dongshui9690 2019-08-07 02:01
浏览 234
已采纳

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

I can understand whole last line of code meaning: It provides a static (compile time) check that *DefaultHandler satisfies the EasygateHandler interface. But I cannot understand what's the meaning of (*DefaultHandler)(nil) and what's the difference with (*DefaultHandler)()

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

var _ easygate.EasygateHandler = (*DefaultHandler)(nil)
</div>
  • 写回答

1条回答 默认 最新

  • dongxiong1941 2019-08-07 02:54
    关注

    The expression (*DefaultHandler)(nil) is a conversion from an untyped nil to a zero value of type *DefaultHandler.

    Conversions are of the form T(x) where T is a type and x is a value that can be converted to type T. In this example, T is *DefaultHandler and x is nil. The parenthesis around *DefaultHandler are required to distinguish the conversion to a pointer type from a dereference of a a conversion to the non-pointer type.

    The expression (*DefaultHandler)() is not valid Go syntax.

    The value &DefaultHandler{} can also be used if DefaultHandler is a type with composite literal syntax. The conversion pattern works for all types.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题