【发布时间】:2017-12-12 02:40:04
【问题描述】:
我刚刚在this blog post看到了这段代码
type Logger interface {
Debug(msg string, keyvals ...interface{}) error
Info(msg string, keyvals ...interface{}) error
Error(msg string, keyvals ...interface{}) error
}
type tmLogger struct {
srcLogger kitlog.Logger
}
// Interface assertions
var _ Logger = (*tmLogger)(nil) // What is this?
// ... interface definition ...
这个“接口断言”是什么?
【问题讨论】:
-
你是对的,“接口断言”不是一个东西,但它也不是一个类型断言。类型断言完全是
var.(Type)形式(如您链接的文档中所示)。这是type conversion。 /迂腐 -
@Adrian:哦,是的,正确,这绝对是一种类型转换,我看了一眼代码,并假设其中有一个
.,因为“断言”一词 -
是的,称其为接口断言与实际术语过于接近,使其更加混乱。