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

下划线,内联接口和赋值的变量声明是什么?

邹嘉致
2023-03-14
问题内容

Go代码的这段代码有什么作用?

var _ interface {
    add(string) error
} = &watcher{}

我相信会&watcher{}返回两件事,第一件事被丢弃,第二件事分配给…接口?我在Github的fswatch中找到了代码。


问题答案:

这个结构将声明一个带有空白标识符名称的变量,其名称由类型文字提供;在这种情况下为接口定义。接下来是初始化程序表达式-
在这种情况下为复合文字的指针。

代码段的总体功能是静态地确保*watcher满足所述接口,因为_不会以任何方式实现变量,并且只能观察到初始化程序的任何可能的副作用。可以是静态的(在这种情况下)或动态的(例如,调用在运行时分配给某些全局变量的函数,注册处理程序等)



 类似资料:
  • 主要内容:声明变量,变量赋值Java 语言是强类型(Strongly Typed)语言,强类型包含以下两方面的含义: 所有的变量必须先声明、后使用。 指定类型的变量只能接受类型与之匹配的值。 这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作,并确定了这些操作的含义。 常量和变量是 Java 程序中最基础的两个元素。常量的值是不

  • 问题内容: 该代码段的作用是什么? 我知道使用“ _”作为空白标识符,但是上述第二行实现了什么? 这是etcd GitHub存储库中的示例:etcd 问题答案: 该代码是机器生成的。生成器添加了这些语句,以避免在没有封送的情况下使用未声明的变量。 代码生成器的作者可能发现添加空白赋值语句比不需要时省略变量更容易。

  • 问题内容: 而且我似乎无法理解这种变量声明: 究竟在做什么,为什么他们这样声明变量而不是 (我发现它是Go by Example:Maps的一部分) 问题答案: 它避免了必须为返回值声明所有变量。 它称为 空白标识符 。 如: (另一个’ ‘用例用于导入) 由于它丢弃了返回值,因此在您只想检查返回的值之一时很有用,例如“ EffectureGo,map ”中所示的“如何测试映射中键的存在? 要在地

  • 问题内容: 此代码中的 是什么意思? 问题答案: 在Python中有4种主要的常规用法: 在交互式解释器会话中保存上次执行的表达式的结果。此先例是由标准CPython解释器设定的,其他解释器也纷纷效仿 在i18n中进行翻译查找( 例如,参见 gettext文档),如代码所示: 作为通用“一次性”的变量名指示函数结果的一部分被故意忽略(在概念上,它被丢弃。),如类似的代码: 。 作为函数定义的一部分

  • 原文: http://exploringjs.com/impatient-js/ch_variables-assignment.html 下面这些是 JavaScript 声明变量的主要方式: let用来声明可变变量。 const用来声明常量(不可变变量)。 在ES6之前,还有var。但它有些怪癖,所以最好在现代JavaScript程序中避免使用它。你可以在“Speaking JavaScript

  • 问题内容: 这是一个真正的初学者问题(我仍在学习Java基础知识)。 我可以(有点)理解为什么方法将返回而不是,或者为什么它们将接受List参数而不是ArrayList。如果对方法没有影响(即,如果不需要ArrayList中的特殊方法),则这将使该方法更加灵活,并且更易于调用者使用。其他集合类型(例如Set或Map)也是如此。 我不明白的是:创建这样的局部变量似乎是一种惯例: 虽然这种形式的频率较