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

Go声明中的“ _”(下划线逗号)是什么?

闻人嘉木
2023-03-14
问题内容

而且我似乎无法理解这种变量声明:

_, prs := m["example"]

究竟在_,做什么,为什么他们这样声明变量而不是

prs := m["example"]

(我发现它是Go by Example:Maps的一部分)


问题答案:

它避免了必须为返回值声明所有变量。
它称为 空白标识符

如:

_, y, _ := coord(p)  // coord() returns three values; only interested in y coordinate

(另一个’ _‘用例用于导入)

由于它丢弃了返回值,因此在您只想检查返回的值之一时很有用,例如“ EffectureGo,map ”中所示的“如何测试映射中键的存在?

_, present := timeZone[tz]

要在地图中测试是否存在而不必担心实际值,可以使用空白标识符,即简单的下划线(_)。
可以使用任何类型的任何值来分配或声明空白标识符,并且可以无害地丢弃该值。
要在地图中测试状态,请使用空白标识符代替常规变量的值。

正如Jsor在评论中添加的

“通常接受的标准”是将成员资格测试变量称为“ ok”(与检查通道读取是否有效相同)

这使您可以将其与测试结合使用:

if _, err := os.Stat(path); os.IsNotExist(err) {
    fmt.Printf("%s does not exist\n", path)
}

您还会在循环中找到它:

如果只需要范围(值)中的第二项,则使用空白标识符(下划线)来丢弃第一项:

sum := 0
for _, value := range array {
    sum += value
}


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

  • 问题内容: Go代码的这段代码有什么作用? 我相信会返回两件事,第一件事被丢弃,第二件事分配给…接口?我在Github的fswatch中找到了代码。 问题答案: 这个结构将声明一个带有空白标识符名称的变量,其名称由类型文字提供;在这种情况下为接口定义。接下来是初始化程序表达式- 在这种情况下为复合文字的指针。 代码段的总体功能是静态地确保满足所述接口,因为不会以任何方式实现变量,并且只能观察到初始

  • 问题内容: 我正在做一个redux教程,并且看到这样的呼叫: 在其他地方定义为: 下划线是什么“ _”?为什么使用它? 问题答案: 这是私有方法和变量的约定。在JavaScript中,没有类的真正隐私。 这意味着您不应在对象之外使用这些方法(以“ ” 开头)。从技术上当然可以,但是“ ”表示您不应该这样做。

  • 问题内容: 通过身份验证表单中的一些Django代码,我注意到以下语法 通常,我只会在字符串周围使用一对引号。有人可以替我解释一下“用户名”下划线和括号是做什么的吗? 问题答案: 的是一个可调用(函数的名称,可调用对象)。通常用于该函数,例如在Django中: 正如文档所说: Python的标准库gettext模块作为的别名安装到全局名称空间中。在Django中,出于以下两个原因,我们选择不遵循此

  • 我正在学习基本的PHP,试图阅读JOOMLA核心文件并对其有一些基本的了解,但我遇到了很多运算符,如“:”等,我不懂。 我在谷歌做了一些研究,有很多关于双冒号(::)的解释,但在“::”上几乎什么都没有,包含这个操作符的文件之一是joomla site root/mod_login/tmpl/default。php,行是 那么这意味着什么呢?是“JRoute::(('index.php',true

  • 本文向大家介绍python中单下划线和双下划线分别是什么?相关面试题,主要包含被问及python中单下划线和双下划线分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 name:一种约定,python内部的名字,是用来与用户自动以的名字区分开,防止冲突