一个关于go变量定义的写法问题

本人看了点go的语法基础

看到以下写法感到有些不理解,请各位大佬不腻赐教:

  1. 变量的写法

    var _ Handler = (*handler)(nil)
  2. 涉及到的接口和结构体

    // 接口
    type Handler interface {
     // Create 创建订单
     // @Tags API.order
     // @Router /api/order/create [post]
     Create() core.HandlerFunc
    
     // Cancel 取消订单
     // @Tags API.order
     // @Router /api/order/cancel [post]
     Cancel() core.HandlerFunc
    
     // Detail 取消订单
     // @Tags API.order
     // @Router /api/order/{id} [get]
     Detail() core.HandlerFunc
    }
    
    // 结构体
    type handler struct {
     logger  *zap.Logger
     db      mysql.Repo
     cache   redis.Repo
     hashids hash.Hash
    }
    
    // 结构体实现
    func (h *handler) Create() core.HandlerFunc {
     //TODO implement me
     panic("implement me")
    }
    //... 更多实现已省略

想问的是:

1步骤中的 这种写法是什么意思,没看太懂

阅读 1.9k
2 个回答

等同下面代码

var h *handler = nil
var _ Handler = h

一般用于编译期间检查类型是否实现了相关接口。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题