我正在学习一个样例Go应用程序,它将数据存储在mongodb中。这一行代码(https://github.com/zeebo/gostbook/blob/master/context.go#L36)似乎访问了gorilla session中存储的用户ID:
if uid, ok := sess.Values["user"].(bson.ObjectId); ok {
...
}
有人可以解释一下这里的语法吗?我知道 sess.Values["user"]
从会话中获取一个值,但是后面的部分是什么意思?为什么点号后面的表达式要用括号括起来?这是函数调用吗?
if value, ok := try_to_obtain_value(); ok { ...
),并且在《Effective Go》中有解释,其中包括名为“Maps”的部分。值得一提的是,对于任何想成为 Gopher 的人来说,这整个文档都是必读的。 - kostixb, ok := i.(string)
的行为类似于 _TryAssert_,b := i.(string)
如果断言无效将立即引发 panic。 - stratovariussess.Values["user"].(type)
这个是返回类型,对吧? - tim