初始化括号中的 Go 结构体有什么作用?

2023-12-05

通常,我会初始化一个结构,例如:

item1 := Item{1, "Foo"}

但是,我最近看到用括号初始化的代码:

item2 := (Item{2, "Bar"})

reflect返回相同的Item name.

括号中的初始化有什么作用以及何时首选?

下面是一些用于尝试此操作的 Go 代码:

  • 操场:https://play.golang.org/p/_gsaruS_DVi

它没有什么特别的,这两行是相同的。

但是,当您想在if例如,语句中需要括号,否则会出现编译时错误:

if i := Item{3, "a"}; i.Id == 3 {
}

结果是:

预期的布尔表达式,发现简单的语句(复合文字周围缺少括号?)(还有 1 个错误)

这是因为出现了解析歧义:左大括号是否是复合文字的一部分或正文的一部分并不明显。if陈述。

使用括号将使编译器明确,所以这是有效的:

if i := (Item{3, "a"}); i.Id == 3 {
}

详细信息请参见:for 循环初始值设定项中的结构

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初始化括号中的 Go 结构体有什么作用? 的相关文章

  • go 中的属性更改通知

    如何在 go 中向多个接收器发出 属性 更改信号 类似于在 Qt 中使用通知信号定义属性的方式 例如 如果您想象有一些值需要以多种方式显示 例如进度值可以同时显示为进度条和文本 当基础值发生变化时 两者都需要更新 一种方法可能是利用chan
  • 如何在 Visual Studio Code 中为 Golang 启用竞争检测器?

    我搜索了很多网页来找到我应该放入哪个短语settings json在 VS Code Golang 扩展 由 Microsoft 发布 中添加构建标志 在我的例子中是竞赛检测器 I added go buildFlags race 在扩展名
  • 使用 crypto/ssh 的 golang scp 文件

    我正在尝试通过 ssh 下载远程文件 以下方法在 shell 上运行良好 ssh hostname tar cz opt local folder gt folder tar gz 然而 golang 上的相同方法在输出工件大小方面存在一些
  • 是否支持动态变量?

    我想知道Go中是否可以动态创建变量 我在下面提供了一个伪代码来说明我的意思 我将新创建的变量存储在切片中 func method slice make type for i 0 i lt 10 i var variable i i slic
  • Golang 按位运算以及一般字节操作

    我有一些 C 代码 可以对字节执行一些按位运算 我正在尝试在 golang 中做同样的事情 但遇到了困难 C 中的示例 byte a c byte data int j c data j c byte c j c a c 0xFF c 0x
  • 无法通过键获取 Gorilla 会话值

    我无法通过这种方式从会话中获取价值 它是nil session initSession r valWithOutType session Values key 完整代码 package main import fmt github com
  • nsq 无法通过连接到 nsqlookupd 来消费消息

    我尝试使用 docker compose 来运行 nsq docker compose yml如下 version 3 services nsqlookupd image nsqio nsq command nsqlookupd ports
  • 在函数中将通道作为参数传递的不同方法

    我正在阅读一些Go代码 并说了几种传递Go通道的不同方法 也许它们是相同的 但我想知道是否有任何区别 因为我无法在线找到文档 1 func serve ch lt chan interface do stuff 2 func serve c
  • 如何在golang模板上打印JSON?

    我需要在客户端有一个对象 所以我使用 json marshal 将其转换为 JSON 并将其打印到模板中 该对象被打印为转义 JSON 字符串 我期待它是var arr o1 o2 但它是var arr o1 o2 我知道我可以在客户端进行
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • Golang中如何删除字符串的最后一个字符?

    我想删除字符串的最后一个字符 但在此之前我想检查最后一个字符是否是 如何才能做到这一点 以下是删除尾随加号的几种方法 package main import fmt strings func TrimSuffix s suffix stri
  • 如何从非英语字符串解析go中的月份

    我想将以下字符串解析为 go 中的日期 This item will be released on March 9 2014 我跟着this https stackoverflow com questions 14106541 go par
  • 错误“binary.Write:无效类型”是什么意思?

    下面显示的代码 我创建了一个结构类型并希望将其编码为二进制 但它显示binary Write invalid type main Stu错误 我读过一些类似的代码 但我找不到为什么我的代码不起作用 type Stu struct Name
  • 使用覆盖率信息测试 Go 中的 os.Exit 场景 (coveralls.io/Goveralls)

    这个问题 如何在 Go 中测试 os exit 场景 https stackoverflow com questions 26225513 how to test os exit scenarios in go 以及其中得票最高的答案 列出
  • (转)如何使用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
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 在 Go/ 中创建/更新 google 驱动器权限/ [使用 api 创建电子表格但无法访问它]

    我正在尝试使用 google Drive api 和以下代码创建电子表格 但我无法访问它 update 该文件似乎不在我在这里指定的驱动器中 有人知道为什么会发生这种情况吗 update 在字段中添加了父母 但有 404 错误 说找不到文件
  • C 中的隐秘结构定义

    我遇到了以下情况迷宫定义 https github com gduarte lkb blob master code stack maze h code typedef struct mazeNode int hasCheese int t
  • 使用 Gorilla 会话自定义后端有什么优势?

    我想使用 Redis 进行会话管理 但我不明白使用 Redis 作为 Gorilla 会话包的自定义后端比直接使用它有什么优势 Gorilla 会话包的链接 http www gorillatoolkit org pkg sessions

随机推荐

  • 切换主显示器的简单应用程序

    我目前的电脑设置是在办公桌上放置一台 17 英寸显示器 在几英尺外放置高清电视 每隔一段时间 通常是玩游戏时 当我将主显示器切换到高清电视时 效果会更好 我运行的是 Vista 所以事情可能会变得非常痛苦 因为我必须通过几个窗口才能切换 我
  • Json和循环引用异常

    我有一个对象 它对另一个对象有循环引用 考虑到这些对象之间的关系 这是正确的设计 为了显示 Machine gt Customer gt Machine 正如预期的那样 当我尝试使用 Json 序列化机器或客户对象时 我遇到了问题 我不确定
  • 如何处理 raw_input 中的整数和字符串?

    仍在尝试理解Python 它与 php 有很大不同 我将选项设置为整数 问题出在我的菜单上 我也需要使用字母 如何一起使用整数和字符串 为什么我不能设置为字符串而不是整数 def main Display the main menu whi
  • AutoMapper 一对多关系

    我开始在我的项目中使用 AutoMapper 为此 我想做以下 一对多 映射 Source public class Team int Id get set string TeamName get set List
  • 在 C++ 中使用数组或 std::vectors,性能差距是什么?

    在我们的 C 课程中 他们建议不要再在新项目中使用 C 数组 据我所知斯特鲁斯特鲁普他自己建议不要使用数组 但是否存在显着的性能差异 使用 C 数组new 即使用动态数组 应该避免 存在的问题是您必须跟踪大小 并且需要手动删除它们并执行各种
  • Android CPU 使用情况下的“时钟滴答”到底是什么?

    我目前正在开发一个 Android 项目 我想获得每个进程的总CPU使用率 所以我使用 proc pid stat 的内容 我提到这个答案是为了获取统计数据 现在我得到了所有的 utime stime 等 问题在于 赫兹 的值 答案是每秒的
  • 使用 npm 安装 ws 会导致 node-gyp 出现错误

    我正在与 Windows 10 64 位 节点0 12 7 国家公共管理 2 11 3 我正在学习 MEAN 堆栈教程 我正在尝试运行以下命令 npm install save ws 我收到此错误消息 C Dev workspace Mea
  • 使用 Timegrouper '1M' 按列进行分组和求和会弄乱我的日期索引 pandas python

    该错误已被发现 下面作为解决方案发布的代码片段有效 我的结果的问题根源在于数据源 FEC GOV 我已经找到了它 现在正在继续前进 非常感谢社区就这个问题付出的所有时间 耐心 帮助等 由于建议解决方案适用于 github 网站上找到的片段
  • 在新 MacBook Air M1 上安装 Pandas 时遇到问题

    我最近买了一台新的 MacBook Air M1 但我在安装 Pandas 时遇到了问题 因为预构建的二进制文件不适用于 macOS arm64 如何在 Apple Silicon Mac 上安装 Pandas 也许为时已晚 但对我有用的唯
  • 在路径中找不到程序 g++

    我正在将 Eclipse 用于 C 项目 我通过转到 新建 gt C 项目 gt 可执行文件 gt 空项目 Linux gcc 工具链创建了一个新项目 当我添加新的 c 文件时 出现 在路径中找不到程序 g 我该如何摆脱这个 我什至没有使用
  • 无法从 OAuth Google API 获取已安装应用程序的访问令牌

    我正在创建一个 OAuth 身份验证流程 以便我安装的应用程序的用户可以访问他们的私有 Google 电子表格文档 我正在使用 Adob e ExtendScript 进行编码 因此无法使用 Google 提供的 Javascript 客户
  • 如何在类似于 Matlab blockproc (blockproc) 函数的块中有效地处理 numpy 数组

    我正在寻找一种好方法 可以有效地将图像划分为小区域 单独处理每个区域 然后将每个处理的结果重新组装成单个处理后的图像 Matlab 有一个工具可以解决这个问题 叫做blkproc 取而代之blockproc在较新版本的 Matlab 中 在
  • java 8 接口中的默认方法和静态方法如何工作?

    我一直在努力思考如何实际做到这一点default and static方法在 java 8 中工作吗 考虑以下接口 public interface Car default void drive System out println Def
  • Android pathPattern 正则表达式问题

    我面临着与 Android Intent Filters 特别是相关的问题 在具有路径模式的数据元素中 参考 https developer android com guide topics manifest data element 我需
  • 在java中设置背景图片

    基本上 我有一个 xml 我想重用它 内容有点相同 只是背景不同 还有一些调整 我该怎么做呢 我已经尝试过View setBackGroundDrawable R drawable sample 但它不起作用 我的应用程序崩溃了 不过 我已
  • 检查数组是否是多维的?

    检查数组是否存在的最有效方法是什么平面阵列 原始值或者如果它是一个多维数组 有没有办法做到这一点而不实际循环 数组并运行is array 在它的每个元素上 使用 count 两次 一次在默认模式下 一次在递归模式下 如果值匹配 则数组为no
  • 获取 javascript 中函数声明的路径

    例如 给定 foo js function bar 我怎样才能实现这样的功能 function getPathOf func return console log getPathOf foo bar Prints foo js 1 1 也就
  • 使用单个公式列出唯一的项目,按降序对数字进行计数和排序,然后对具有相同计数的项目按字母顺序排序

    正如标题所说 我需要使用一个公式来列出一列中原始列表中的唯一项目 对它们进行计数并按降序对它们进行数字排序 然后按字母顺序对具有相同计数的项目进行排序 最后还排除一些诸如 ITEMS 之类的单词 This should help under
  • 编译在运行时作为 prop 接收的 Vuetify 标签/模板

    我想将 模板 道具发送到组件然后渲染它 如果我发送一个纯 HTML 它可以工作 但是如果我发送一个 Vuetify 标签 例如
  • 初始化括号中的 Go 结构体有什么作用?

    通常 我会初始化一个结构 例如 item1 Item 1 Foo 但是 我最近看到用括号初始化的代码 item2 Item 2 Bar reflect返回相同的Item name 括号中的初始化有什么作用以及何时首选 下面是一些用于尝试此操