带地图的“if”语句中的 Golang 语法

2024-03-10

我正在这里阅读教程:http://www.newthinktank.com/2015/02/go-programming-tutorial/ http://www.newthinktank.com/2015/02/go-programming-tutorial/

在“地图中的地图”部分有:

package main

import "fmt"

func main() {

    // We can store multiple items in a map as well

    superhero := map[string]map[string]string{
        "Superman": map[string]string{
            "realname":"Clark Kent",
            "city":"Metropolis",
        },

        "Batman": map[string]string{
            "realname":"Bruce Wayne",
            "city":"Gotham City",
        },
    }

    // We can output data where the key matches Superman

    if temp, hero := superhero["Superman"]; hero {
        fmt.Println(temp["realname"], temp["city"])
    }

}

我不明白“如果”语句。有人可以引导我完成这一行的语法吗:

if temp, hero := superhero["Superman"]; hero {

Like if temp对于局外人来说似乎很荒谬,因为 temp 甚至没有在任何地方定义。那会实现什么?然后hero := superhero["Superman"]看起来像是一个任务。但是分号是做什么的呢?为什么是决赛hero there?

有人可以帮助新手吗?

非常感谢。


二值赋值测试键是否存在:

i, ok := m["route"]

在此语句中,第一个值 (i) 被赋予存储的值 在“路线”键下。如果该键不存在,则 i 是值 类型的零值 (0)。第二个值 (ok) 是一个布尔值,如果满足以下条件则为 true 该键存在于地图中,如果不存在则为 false。

当我们不确定地图内的数据时,基本上会使用此检查。因此,我们只需检查特定的键,如果存在,我们将值分配给变量。这是一个 O(1) 的检查。

在您的示例中,尝试在地图内搜索不存在的键:

package main

import "fmt"

func main() {

    // We can store multiple items in a map as well

    superhero := map[string]map[string]string{
        "Superman": map[string]string{
            "realname": "Clark Kent",
            "city":     "Metropolis",
        },

        "Batman": map[string]string{
            "realname": "Bruce Wayne",
            "city":     "Gotham City",
        },
    }

    // We can output data where the key matches Superman

    if temp, hero := superhero["Superman"]; hero {
        fmt.Println(temp["realname"], temp["city"])
    }

    // try to search for a key which doesnot exist

    if value, ok := superhero["Hulk"]; ok {
        fmt.Println(value)
    } else {
        fmt.Println("key not found")
    }

}

游乐场示例 https://play.golang.org/p/F_Ow0PoKXEP

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

带地图的“if”语句中的 Golang 语法 的相关文章

  • 如何将UTC时间转换为unix时间戳

    我正在寻找将 UTC 时间字符串转换为 unix 时间戳的选项 我的字符串变量是02 28 2016 10 03 46 PM并且需要将其转换为 unix 时间戳 例如1456693426 知道该怎么做吗 首先 unix时间戳14566934
  • 为什么在读取字典时要锁定

    我对我正在阅读的一本关于线程的书 C 3 in a Nutshell 中的代码列表感到困惑 在 应用程序服务器中的线程安全 主题中 给出了以下代码作为 UserCache 的示例 static class UserCache static
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • 我可以在 if 语句中使用“as”机制吗

    是否可以使用as in if类似的声明with我们使用的 例如 with open tmp foo r as ofile do something with ofile 这是我的代码 def my list rtrn lst True if
  • 在 VBA 中按键对字典进行排序

    我使用 VBA 创建了一个字典CreateObject Scripting Dictionary 将源单词映射到要在某些文本中替换的目标单词 这实际上是为了混淆 不幸的是 当我按照下面的代码进行实际替换时 它将按照源单词添加到字典中的顺序替
  • 使用 HTTPS GRC 从 AWS Codecommit 获取私有存储库

    我正在尝试导入位于 AWS codecommit 中的模块 为了克隆存储库 我使用 HTTPS GRC Git 远程代码提交 方法 该方法使用 Google Suite 凭证来访问 AWS 控制台 我用来克隆存储库的命令是 git clon
  • C# 要么返回 false 要么什么也不做

    我想知道是否有办法不必重复相同的事情如果施工而是调用一个状态检查 成功后无法返回true 有人知道这个问题更好的标题吗 bool Enable if GetStatus ref status Trace WriteLine Error re
  • Map.Entry 的比较器

    我有一个以枚举类型作为键 以 Double 作为值的 Map 我想根据 Double 值对其进行排序 所以我得到了条目集并想使用Collections sort 与比较器 我有以下比较器代码 class ScoreComparator
  • go中有memset的类似物吗?

    在 C 中 我可以使用某些值初始化数组memset https msdn microsoft com en us library aa246471 28v vs 60 29 aspx const int MAX 1000000 int is
  • 从字典的元素创建 Pandas 数据框

    我正在尝试从字典创建一个 pandas 数据框 字典设置为 nvalues y1 1 2 3 4 y2 5 6 7 8 y3 a b c d 我希望数据框仅包含 y1 and y2 到目前为止我可以使用 df pd DataFrame fr
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map
  • 在 SPSS 中生成语法的语法

    我正在尝试构建一个语法来在 SPSS 中生成语法 但我遇到了一些问题 我有一个包含元数据的 Excel 文件 我想使用它来创建一个语法来从中提取信息 就像这样 如果我有一个巨大的数据库 我只需要保持 Excel 更新 添加 删除变量 等等
  • GOMAXPROCS 默认值是多少?

    不设置同名环境变量时是否保证GOMAXPROCS设置为1 此代码显示的值 package main import runtime fmt func getGOMAXPROCS int return runtime GOMAXPROCS 0
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • C# 中字典的内存使用情况

    我有一些代码添加了嵌套字典 格式如下 Dictionary
  • JAVA:如何搜索地图?

    我有一个 Map 其键为字符串 其值为集合 包含整数 假设我的钥匙看起来像 苹果 香蕉 橙色 等 用户输入文本 我将其保存为字符串变量 如何在我的地图中搜索相同的密钥 因此 如果用户输入 apple 我如何将该字符串提供给方法并让该方法在我
  • 如何在golang中解析JSON而不需要解组两次

    我有一个 Web 套接字连接 它在 JSON 对象中发送不同类型的消息 并且我想将内容解组到一些已知的结构中 为此 我认为我应该执行以下操作 步骤 1 将 JSON 解组为通用映射 字符串 接口 步骤 2 找到我要找的钥匙 步骤 3 尝试将
  • 运行时异常:java.lang.NoSuchMethodException:tfidf$Reduce.()

    如何解决这个问题 tfidf是我的主类 为什么运行jar文件后会出现这个错误 java lang RuntimeException java lang NoSuchMethodException tfidf Reduce
  • Golang 正则表达式在字符串之间替换

    我有一些可能采用以下形式的字符串 MYSTRING MYSTRING n MYSTRING n MYSTRING randomstringwithvariablelength n 我希望能够将其正则表达式为MYSTRING foo 基本上替
  • 直接从一个通道发送到另一个通道

    当从一个通道直接发送到另一个通道时 我偶然发现了令人惊讶的行为 package main import fmt func main my chan make chan string chan of chans make chan chan

随机推荐

  • Shrine gem - 如何从 s3 删除上传的图像

    显然 remove attachment插件可以完成检查和提交的技巧 但如何从控制器调用该方法 所有允许您设置表单字段的插件 remove attachment remote url data uri 的工作方式是向您的模型添加 gette
  • 使用简洁的 DAL 和 C#

    我有一个使用 Dapper 的数据访问层 但不禁觉得它可以更加优雅 DAL 只是传递参数并根据模型的命名响应映射模型 因此该部分至少是直接的 但我讨厌看起来重复的代码 这是一个例子 public IEnumerable
  • 故事板segue 显示从底部垂直而不是水平的过渡

    我有一个基本的故事板设置 可以通过单击按钮来通过一些视图控制器进行转换 我还在故事板的根部设置了一个导航控制器 希望这个 Segue 链的性能与一系列 Pushes 过去的工作方式类似 功能都在那里 导航栏控制也是如此 但是过渡都有从底部进
  • 计算非常大的矩阵的逆

    我正在尝试用 C 计算一个非常大的矩阵 11300x21500 的逆 到目前为止 我已经尝试过 Eigen 和 Armadillo 库 但都在初始化阶段失败 说没有足够的内存 有什么办法可以克服这种情况吗 提前致谢 P S I should
  • 使 Linearlayout 可滚动而不使用 Scrollview

    我有一个 Linearlayout 我想使其可滚动而不使用 ScrollView 是否可以 任何建议将不胜感激 详细信息如下 如果我使用 ScrollView 包装 LinearLayout 那就可以了 但是当我在 LinearLayout
  • 如何在 Alamofire 中使用 NetworkReachabilityManager

    我想要类似的功能AFNetworking在 Objective C 中 在 Swift 中使用 Alamofire NetworkReachabilityManager Reachability detection AFNetworkRea
  • Ruby 使用什么哈希函数?

    Ruby 的哈希函数算法是什么 标准 Ruby 实现使用杂音哈希 http murmurhash googlepages com 对于某些类型 整数 字符串 来自 string c 1901 MurmurHash described in
  • _("text"),即下划线括号字符,有什么作用? [复制]

    这个问题在这里已经有答案了 在 C 代码中我遇到了这一点 test 它有什么作用 我试图自己查找它 但正如你可以想象的那样 搜索引擎不支持搜索 它正在调用名为的函数 例如 include
  • 依赖注入:海龟一路向下?

    所以我想知道单元测试如何处理外部依赖项 在这里和其他地方 我已经熟悉了依赖注入 以及它如何允许我们测试代码单元 A 但是 我对如何测试其他单元 B 和 C 感到困惑 这些单元现在拥有外部依赖项 以便它们可以将其注入到原始单元 A 中 例如
  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin
  • Magento 新购物车属性

    嗨 我面临的问题一开始似乎很简单 但现在变成了一场真正的噩梦 我被要求向所有产品添加一个属性 即点 使用管理面板非常简单地完成 并将其总计作为可以设置规则的购物车属性 我非常肯定购物车属性是在以下位置定义的 class Mage Sales
  • 实例化接口而不使用实现类

    我有一个接口 称为 Planet 其实现类受到保护 并且我无法更改其访问修饰符 但是 我需要在主类中调用实现类的方法 例如 在实现类中 我有 public void orbit distance 我努力了 private Planet pl
  • 因此更改了 Git 的默认编辑器,现在我如何从 Git bash 调用它?

    我通过将以下内容应用于 Git 的全局配置来更改 Git 的默认编辑器 core editor C Program Files Notepad notepad exe multiInst notabbar nosession noPlugi
  • 如何删除CheckBox右侧不需要的空格?

    我正在研究自定义列表视图 我想展示一个CheckBox在自定义视图中 没有文字说明CheckBox 我发现它的右侧总是有一些空格CheckBox 这是我的布局 xml 文件
  • 使用 LINQ to SQL 时如何抽象出持久性代码?

    我喜欢 LINQ to SQL 但一直困扰我的是 在使用它时 我的存储库代码由 LINQ to SQL 框架生成 因此与 SQL Server 数据库紧密耦合 你们中是否有人以抽象 松散耦合的方式使用 LINQ to SQL 如果是 您是如
  • 当窗口顶部到达特定元素时将类添加到 DIV,并在未到达时将其删除

    我有一个 navigation在包装纸的顶部 我想添加一个 fixed类 当窗口顶部到达 bottomDIV 并在顶部时删除此类 bottom位于窗口范围内 它是在添加和删除 fixed 类之间切换 div div class naviga
  • “内存压力”是什么意思?

    通读一遍苔丝 费兰德斯的博客 https blogs msdn microsoft com tess 2008 04 17 how does the gc work and what are the sizes of the differe
  • 修改测试中的 Django 设置

    来自姜戈docs https docs djangoproject com en dev topics settings altering settings at runtime 您不应该在运行时更改应用程序中的设置 为了 例如 不要在视图
  • 带地图的“if”语句中的 Golang 语法

    我正在这里阅读教程 http www newthinktank com 2015 02 go programming tutorial http www newthinktank com 2015 02 go programming tut