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

2024-01-03

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

_, prs := m["example"]

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

prs := m["example"]

(我发现它是举例:地图 https://gobyexample.com/maps)


它避免了必须为返回值声明所有变量。
它被称为空白标识符 https://golang.org/doc/effective_go.html#blank.

As in:

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

这样,您就不必声明一个您不会使用的变量:Go 不允许这样做。相反,使用“_”来忽略所述变量。

(the other '_' 用例用于导入 https://stackoverflow.com/q/26972615/6309)

由于它会丢弃返回值,因此当您只想检查返回值之一时会很有帮助,如“如何测试地图中的键是否存在? https://stackoverflow.com/a/2051011/6309“显示在”有效的围棋、地图 http://golang.org/doc/effective_go.html#maps":

_, present := timeZone[tz]

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

As Jsor https://stackoverflow.com/users/901827/jsor adds 在评论中 https://stackoverflow.com/questions/27764421/what-is-in-a-golang-declaration/27764432#comment43940322_27764432:

“普遍接受的标准”是将成员测试变量称为“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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go 声明中的“_,”(下划线逗号)是什么? 的相关文章

  • Devops YAML - 使用表达式设置构建名称

    在 yaml 构建中 是否可以使用表达式设置构建名称 如果我可以将发布管道与实际构建 ID 相匹配 那将是有利的 Example trigger master variables major 2 minor 3 offset 2000 bi
  • 共享来自单独命令/进程的属性

    我提供带有多个命令和子命令的命令行工具 我使用cobra https github com spf13 cobra命令行 我有两个单独的命令首先是前提条件e 给其他人 例如第一个命令是通过创建临时文件夹并验证某些文件来首选环境 第二个命令应
  • Go 中的 WebP 编码器/解码器

    是否有一个完整的 WebP 编码器和解码器与当前每周 或可分叉 兼容 它的速度与标准 png 相当吗 这个人在 GitHub 上有一个包 其中包含 WebP 的编码器和解码器 https github com chai2010 webp h
  • 在不同的函数中调用变量而不使用全局变量

    我试图在另一个函数中定义的函数中使用变量 列表 而不将其设置为全局 这是我的代码 def hi hello 1 2 3 print hello def bye hello print hello hi bye hello 目前我收到错误 b
  • 按引用或按值扫描功能

    我有以下代码 statement SELECT id from source where mgmt 1 var exists string errUnique dr db QueryRow statement mgmt Scan exist
  • 在函数中将通道作为参数传递的不同方法

    我正在阅读一些Go代码 并说了几种传递Go通道的不同方法 也许它们是相同的 但我想知道是否有任何区别 因为我无法在线找到文档 1 func serve ch lt chan interface do stuff 2 func serve c
  • 如何将变量从外部 JavaScript 传递到 HTML 表单

    我一直试图将一个值从外部 javascript 文件传递 到 HTML 表单 但没有成功 这些文件相当大 所以我不确定我可以解释这一切 但我会尝试 基本上 用户单击一个链接 然后启动一个 js 文件 新 HTML 页面加载后立即执行 我需要
  • 单击按钮时,如何将数字存储在 html 表单输入中作为 javascript 变量? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 基本上我想做的是 当用户在 HTML 表单输入字段中输入一个数字 然后按下提交按钮时 该数字将存储在 JavaScript 变量中
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 在 Go 中使用电子邮件地址创建证书签名请求 (CSR)

    我尝试使用 crypto x509 包生成 CSR 但没有找到将 emailAddress 字段添加到其主题中的方法 根据文档证书申请 http golang org pkg crypto x509 CertificateRequest结构
  • 如何在变量中存储包含哈希标记的完整 url?

    我正在尝试存储一个网址 例如 http localhost pro print index php page home http localhost pro print index php page home 在变量中 但我找不到执行此操作
  • C-为什么char c=129会转换成-127?

    如果我们分配 128到 char 变量 然后将其转换为 128因为二进制等价 10000000 first bit tells sign 二进制等价于129 is 10000001 它将转换成什么值 字符c 129 谢谢 S 实际上有几种可
  • (转)如何使用toml文件?

    正如标题 我想知道如何使用 golang 中的 toml 文件 在此之前 我展示了我的 toml 示例 这样对吗 datatitle enable true userids 12345 67890 datatitle 12345 prop1
  • Golang中如何获得100%的代码覆盖率? [复制]

    这个问题在这里已经有答案了 我无法获得 100 的代码覆盖率 因为我无法在 Golang 中测试 Fatals 我发现了一些问答 包括this one https stackoverflow com questions 30688554 h
  • 编写每个处理程序中间件

    我希望从处理程序中提取一些重复的逻辑 并将其放入一些每个处理程序的中间件中 特别是 CSRF 检查 检查现有会话值 即身份验证或预览页面 等 我读了关于此的几篇文章 http justinas org writing http middle
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 根据值匹配数组

    我使用以下代码来解析 yaml 并应得到输出为runners对象和函数build应更改数据结构并根据以下结构提供输出 type Exec struct NameVal string Executer string 这是我尝试过的 但我不知道
  • 模块函数中使用的 $_ 变量为空 (PowerShell)

    这里有一个问题要问你 我有这个功能 function Set DbFile param Parameter ValueFromPipeline true System IO FileInfo InputObject Parameter Va
  • benchmem 的输出

    使用内存分析器运行基准测试时 我看到以下输出 SomeFunc 100 17768876 ns op 111 B op 0 allocs op 我不明白输出 0 allocs op 但分配了 111 B 知道这意味着什么吗 我的函数是否在堆
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b

随机推荐

  • C - IF(char[] == "ZYX") 不起作用

    我从arduino发送到arduino字符串 I2C 捕获并保存到char 10 当我将此变量与文本进行比较时 条件没有执行 而且我不知道为什么 char dataRx 10 void DaemonReceiving int howMany
  • 当外字段是数组时 MongoDB 查找

    我搜索过互联网和 StackOverflow 但找不到答案 甚至找不到问题 我有两个收藏 reports and users 我希望我的查询返回所有报告 并指示指定用户是否将该报告作为其数组中的最爱 报告收集 id 1 name Repor
  • Android 虚拟设备管理器因“双重释放或损坏”而崩溃

    当我尝试运行任何模拟器时 我得到 Android 虚拟设备崩溃 https i stack imgur com bmI8A png 我玩 Android studio 的控制台说 Error in home standy Android S
  • 我的 python 代码不将视频帧保存为图像

    我正在尝试抓取视频中的特定帧 例如帧 0 10 20 并使用 Python 和 CV2 将它们保存为图像 由于某些原因 我的代码只保存第一帧 所有其他帧均已创建 但大小为 0 它们已损坏 我该如何解决这个问题 import cv2 from
  • Django Forms,为 request.user 设置初始值

    是否有某种方法可以使以下操作成为可能 或者应该在其他地方完成 class JobRecordForm forms ModelForm supervisor forms ModelChoiceField queryset User objec
  • 实体类型没有定义键 - 代码优先

    我是 MVC 和实体框架的新手 我搜索了很多并发现了一些类似的问题 例如实体类型没有定义键 https stackoverflow com questions 6290511 entity type has no key defined 但
  • ASP.NET-MVC jQuery 不显眼的远程验证返回误报

    我又回到了 9 个月前我最后一次参与的项目 查看了我们编写的一些代码 希望现在有更好的方法来做到这一点 虽然最初对 jQuery 不显眼的验证印象深刻 但我们最终不得不将下面的 hack 组合在一起 部分基于我现在无法动手的博客文章 来处理
  • 如何在 django 中创建并强制执行通用的 OneToOne 关系?

    我想要与完全相同的东西django contrib contenttypes generic GenericForeignKey but OneToOne代替ForeignKey 我认为一个简单的 尽管有点不优雅 的解决方法是添加uniqu
  • window.onpopstate 不起作用;当我导航回页面时没有任何反应

    我正在尝试添加window onpopstate在我网站的其中一个页面上 但什么也没有发生 我把这个脚本放在页面上 我也尝试过 但是 当我导航回该页面时 我没有收到任何警
  • Access 2013:分发 FE 或保留在共享网络驱动器上以用于拆分 DB

    只是想知道拆分数据库的前端部分的最佳实践是什么 该公司有一个每个人都可以访问的共享驱动器 并且是后端的实际位置 只是想知道将 FE 副本分发给每个人是否是更好的做法 或者我是否应该将他们指向共享驱动器上的 FE 方向 后者似乎更容易维护 尽
  • 是否可以在 clang 中禁用此警告?警告:#pragma 一次出现在主文件中

    警告 pragma 一次出现在主文件中 我们通过 clang 运行标头来获取部分 AST 是否可以禁用该警告 Use the Wno pragma once outside header命令行参数 查阅 Clang 文档here https
  • 如何将不在phonegap注册表中的cordova插件添加到meteor?

    根据文档 https github com meteor meteor wiki Meteor Cordova Phonegap integration using cordova plugins directly in your appl
  • 将每个值作为 SQL 中的行重复 n 次

    一段时间以来 我一直试图在 SQL Oracle 11g 中实现这一目标 但找不到合适的方法 我的桌子names有以下几行 NAME REPEAT KAUSHIK 2 KARTHIK 3 NIDHI 1 ASHWINI 5 JAGADEES
  • 梅文。 “无家可归”的罐子该怎么办?

    我有一些 proprietary jar 需要包含在我的项目中 但我不想将其安装到本地存储库 我最初所做的是将 jar 放入我的项目的版本控制中lib 文件夹 然后将 Maven 依赖项指定为
  • HTML5 画布圆形文本

    如何使用画布创建圆形文本 圆形文本 字母现在应该正确定向 CanvasRenderingContext2D prototype fillTextCircle function text x y radius startRotation va
  • 使用正则表达式进行 Github 搜索

    有没有办法使用正则表达式在 github 存储库中搜索代码 目前 我克隆了存储库并进行搜索 但我想输入类似的内容 s foo gi 并查找代码中所有出现 foo 的地方 foo create foo extend fooBar barFoo
  • 从 SurfaceView 获取图像到 ImageView?

    我在从用作相机预览的 SurfaceView 获取图像 可绘制对象或位图时遇到了一些麻烦 final CameraSurfaceView cameraSurfaceView new CameraSurfaceView this Linear
  • 使用边框创建三角形

    我最近需要创建对话气泡 为了在对话气泡的末端创建小三角形尖端 我使用了CSS技术 http jsfiddle net 66jAA 5 其中元素被赋予0 width and 0 height并给定边界 使某些边框透明会产生对角线 这非常有效
  • 如何在 React 的子功能组件中触发一个动作?

    对于基本的表单 输入布局 很明显应该使用回调来处理从子组件到父组件的状态更改 由子组件发起 但是父组件如何要求子组件重新评估其状态并将其传达回父组件 这里的最终目标只是在提交表单按钮时触发子输入的验证 给定的 ts 代码如下所示 const
  • Go 声明中的“_,”(下划线逗号)是什么?

    我似乎无法理解这种变量声明 prs m example 究竟是什么 他们为什么声明这样的变量而不是 prs m example 我发现它是举例 地图 https gobyexample com maps 它避免了必须为返回值声明所有变量 它