
在 go 中定义变量时的疑惑解答
在阅读 go 语法基础时,你可能会遇到如下写法:
var _ handler = (*handler)(nil)
这个写法可能会让人感到困惑,本文将为你详细解释其含义。
首先,了解相关接口和结构体非常重要:
接口
type handler interface {
create() core.handlerfunc
cancel() core.handlerfunc
detail() core.handlerfunc
}结构体
type handler struct {
logger *zap.logger
db mysql.repo
cache redis.repo
hashids hash.hash
}问题1:上面代码的含义是什么?
上面代码的目的是创建一个名为 _ 的变量,该变量实现了 handler 接口。(*handler)(nil) 部分创建了一个 handler 结构体的零值,该零值类型为 *handler,而 _ 变量的类型则为 handler。
这种写法通常用于在类型断言或其他情况下需要一个实现了特定接口类型的变量。例如,它可以用于强制将 handler 类型断言为 handler 类型:
var h Handler = (*handler)(nil)










