我发现了这个变量声明var _ PropertyLoadSaver = (*Doubler)(nil),我想知道它的目的是什么.它似乎没有初始化任何东西,因为它使用空白标识符,我猜你无法访问它.
Cer*_*món 11
这是一个*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)
Run Code Online (Sandbox Code Playgroud)
这是它的工作原理.代码var _ PropertyLoadSaver声明了一个未命名的类型变量PropertyLoadSaver.表达式(*Doubler)(nil)求值为type的值*Doubler.如果实现接口,*Doubler则只能分配给类型变量.PropertyLoadSaver*DoublerPropertyLoadSaver
使用空白标识符_是因为变量不需要在包中的其他位置引用.使用非空标识符可以获得相同的结果:
var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |