gpt4 book ai didi

go - "dot parenthesis"语法是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 13:01:09 27 4
gpt4 key购买 nike

我正在研究一个将数据存储在 mongodb 中的示例 Go 应用程序。这一行的代码 (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"] 从 session 中获取一个值,但是接下来的部分是什么?为什么括号中的点后面的表达式?这是函数调用吗?

最佳答案

sess.Values["user"] 是一个interface{},括号之间的称为 type assertion 。它检查 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

关于go - "dot parenthesis"语法是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24492868/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com