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

Golang中“圆括号”语法的含义是什么?

柯鸿云
2023-03-14
问题内容

我正在研究将数据存储在mongodb中的示例Go应用程序。这行代码(https://github.com/zeebo/gostbook/blob/master/context.go#L36)似乎访问了存储在大猩猩会话中的用户ID:

if uid, ok := sess.Values["user"].(bson.ObjectId); ok {
  ...
}

有人可以在这里给我解释一下语法吗?我知道这sess.Values["user"]可以从会话中获取价值,但是接下来的部分是什么呢?为什么括号中的点后面是表达式?这是函数调用吗?


问题答案:

sess.Values["user"]interface{},括号之间的内容称为
类型断言
。它检查的值sess.Values["user"]是否为类型bson.ObjectId。如果是,ok则将为true。否则,它将为false

例如:

var i interface{}
i = int(42)

a, ok := i.(int)
// a == 42 and ok == true

b, ok := i.(string)
// b == "" (default value) and ok == false


 类似资料:
  • 问题内容: 而且我仍然无法理解花括号的工作原理,特别是由于诸如简单程序这样的页面: http://wiki.python.org/moin/SimplePrograms 在各处使用大括号。我了解方括号和规则的圆括号,但是我不知道“定义字典”的含义或它们应该代表的含义。 问题答案: Python中使用“大括号”来定义字典。字典是一种将一个值映射到另一个值的数据结构,就像英语词典如何将单词映射到其定义

  • 问题内容: 我是Golang的新手,正在做http://tour.golang.org/。谁能向我解释 第1、3、5和7行, 特别是’*’和’&’的作用吗?我的意思是通过在函数声明中提及它们,它们应该/应该做什么?一个玩具的例子: 看起来它们就像我们在C ++中一样。但是我无法将这些概念与此处的内容联系起来。换句话说,当我在Go的函数声明中使用“ *”和“&”时,它们会做什么。 编辑: 我知道引用

  • 我看到越来越多的命令如下: 这些方括号有什么作用?

  • 我尝试在浏览控制台中测试此语法,但遇到错误: 对于上面的代码,我关心的是是否会引发任何错误。

  • 问题内容: 我迅速在Google上找到了答案,但找不到/认为准确的搜索参数。 我正在自学Java,但似乎找不到某种语法的含义。 这意味着什么?我模糊地记得箭头括号与向量有关,但是根据上面的代码,我感觉到它与枚举有关。 任何帮助或澄清将不胜感激。谢谢。 问题答案: 这些称为泛型。 通常,这些在定义类,接口和方法时使 类型 (类和接口)成为参数。 与使用非泛型代码相比,使用泛型有很多好处,如Java教

  • 问题内容: 我在弄清楚csv.dictreader的参数时遇到了麻烦,并且意识到我不知道方括号表示什么。 从文档中: 我希望对类实例化​​的参数进行总结。 谢谢 问题答案: 方括号表示这些参数是 可选的 。您可以忽略它们。 因此,在这种情况下,您仅 需要 将参数传递给。如果您要传递第二个参数,它将被解释为参数。第三个是,等等。 如果只想指定eg和,则必须显式命名关键字参数,如下所示: 有关关键字参