这是一个
*Doubler类型满足
PropertyLoadSaver接口的编译时断言。当类型的方法集是该接口的方法集的超集时,该类型将实现接口。
如果
*Doubler类型不能满足接口要求,则编译将退出,并显示类似以下错误:
prog.go:21: cannot use (*Doubler)(nil) (type *Doubler) as type PropertyLoadSaver in assignment:*Doubler does not implement PropertyLoadSaver (missing Save method)
运作方式如下。该代码
var _PropertyLoadSaver声明了一个类型为的未命名变量
PropertyLoadSaver。该表达式
(*Doubler)(nil)
将无类型的nil
转换为type的nil值
*Doubler。如果实现接口,
*Doubler则只能将分配给type变量。
PropertyLoadSaver``*Doubler``PropertyLoadSaver
使用空白标识符
_是因为不需要在包中的其他位置引用该变量。使用非空白标识符可以实现相同的结果:
var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil)



