ako*_*nsu 32 syntax go language-concepts type-assertion
我正在研究一个将数据存储在mongodb中的golang应用程序示例.此行的代码(https://github.com/zeebo/gostbook/blob/master/context.go#L36)似乎访问存储在gorilla会话中的用户ID:
if uid, ok := sess.Values["user"].(bson.ObjectId); ok {
...
}
Run Code Online (Sandbox Code Playgroud)
有人请告诉我这里的语法吗?我理解sess.Values["user"]从会话中获取一个值,但接下来的部分是什么?为什么点后的表达式在括号中?这是函数调用吗?谢谢!
jul*_*enc 59
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7054 次 |
| 最近记录: |