我有这样的方法:
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
是的,您可以将out参数定义为指针*VoucherUsageEvent
。
func detectVoucherUsageEvent(_ uint64, changeset changelog.Changeset) (*VoucherUsageEvent, error)
返回作为参考或为零。
return &VoucherUsageEvent{m}, nil
要么
return &event, eventNotDetected
要么
return nil, err
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句