Golang中“圆括号”语法的含义是什么?
我正在研究将数据存储在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
以上是 Golang中“圆括号”语法的含义是什么? 的全部内容, 来源链接: utcz.com/qa/417569.html