返回结构或错误的函数

最大值:

我有这样的方法:

var eventNotDetected = errors.New("Event not detected")

type VoucherUsageEvent struct {
    M models.M
}

func detectVoucherUsageEvent(_ uint64, changeset changelog.Changeset) (VoucherUsageEvent, error) {
    var event VoucherUsageEvent

    if changeset.GetHeader().Table != db.TABLE_NAME {
        return event, eventNotDetected
    }

    switch changeset.(type) {
    case changelog.InsertChangeset, changelog.UpdateChangeset:
        m, err := models.Map(changeset)

        if err != nil {
            return event, err
        }

        return VoucherUsageEvent{m}, nil

    default:
        return event, eventNotDetected
    }
}

想法是,根据输入,它可以返回对象实例与否。如果无法返回对象实例,则该函数应说明为什么无法返回(映射期间发生错误,或者只是找不到错误)

当函数不返回实例时,返回签名有点奇怪,例如:

return event, eventNotDetected
return event, err

基本上我只是用,event因为我不能只返回nil。

还是在这种情况下仅返回引用的更好方法,因此我可以将返回情况更改为:

return nil, eventNotDetected
return nil, err
jeevatkm:

是的,您可以将out参数定义为指针*VoucherUsageEvent

func detectVoucherUsageEvent(_ uint64, changeset changelog.Changeset) (*VoucherUsageEvent, error)

返回作为参考或为零。

return &VoucherUsageEvent{m}, nil

要么

return &event, eventNotDetected

要么

return nil, err

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章