当前位置: 首页 > 面试题库 >

规范:变量分配中空白标识符的用途是什么?

岳玉堂
2023-03-14
问题内容

我发现了这个变量声明var _ PropertyLoadSaver=(*Doubler)(nil),我想知道它的目的是什么。它似乎没有初始化任何东西,并且因为它使用空白标识符,所以我想您无法访问它。


问题答案:

这是一个*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)


 类似资料:
  • The blank identifier 空白标识符 We’ve mentioned the blank identifier a couple of times now, in the context of for range loops and maps. The blank identifier can be assigned or declared with any value of an

  • 简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。 Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说: 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。 标识符不能和 Python 中的保留字相同。有关保留字,后续章节会详细介绍。 Python中的标识符中,不能包含

  • 我正在构建一个应用程序,它解析JSON模板,然后用新数据替换对象的值。我的问题是在JSON中表示空数据的标准方式是什么? null 这是正确的吗?

  • 本文向大家介绍在PowerShell中$ error变量的用途是什么?,包括了在PowerShell中$ error变量的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 PowerShell中的错误变量用于查看当前PowerShell会话中生成的错误。我们可以说$Error变量是存储所有错误的容器,并且最新的错误将首先显示。对于下面的示例,我们将$Errorview设置为Category视图

  • 问题内容: Go编程语言规范指出:“要仅出于副作用(初始化)的目的导入软件包,请使用空白标识符作为显式软件包名称。” 例如: 我很难想象这种构造的用例。可接受的“import”语句用法答案提到了一个用例,其中可以在不需要导入程序使用该包的任何导出功能的情况下加载数据库驱动程序,但是它使细节遗漏了读者的想象力。 是否有现实生活中的示例(带有代码片段和说明)来说明此用例? 问题答案: 我正在编写一个调

  • 问题内容: 我正在阅读我的Deitel《 Java How to Program》一书,并遇到了“ 阴影 ”一词。如果允许阴影,那么Java类中有什么情况或目的? 例: 问题答案: 阴影的基本目的是使本地代码与周围的类分离。如果不可用,请考虑以下情况。 API中的Class Foo已发布。在代码中将其子类化,并在子类中使用名为bar的变量。然后,Foo发布更新,并在其类中添加一个称为Bar的受保护