为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 返回 nil

Golang 返回 nil

Go
慕的地8271018 2021-08-30 14:44:51
我试图围绕 Golang 的类型和接口进行思考,但在这样做时有点挣扎。无论如何,我看到的一个常见模式是func Whatever() (thing string, err error). 我知道所有这些是如何工作的,但我感到困惑的一件事是为什么可以return "thing", nil. 我正在查看的特定实例在这里陶醉-func (c *GorpController) Begin() revel.Result {    txn, err := Dbm.Begin()    if err != nil {        panic(err)    }    c.Txn = txn    return nil}revel.Result 是具有此签名的接口-type Result interface {    Apply(req *Request, resp *Response)}无论如何,我只是好奇nil在那种情况下返回如何满足编译器。有没有可以指向我的资源?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

这类似于返回 nil 错误:

在幕后,接口被实现为两个元素,一个类型和一个值

值,称为接口的动态值,是一个任意的具体值,类型是值的类型。对于int3,接口值示意性地包含 ( int, 3)。

接口值nil仅当内部值和类型都未设置时, ( nil, nil)。特别是,nil接口将始终包含一个nil类型。
如果我们*int在接口值中存储类型指针,则内部类型将*int与指针的值无关:( *int, nil)。
因此,non-nil当内部指针为 时,这样的接口值将是偶数nil

nil是接口的零值revel.Result


查看完整回答
反对 回复 2021-08-30
  • 1 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信