res := i.Exec(ctx)
id, err := res.LastInsertId()
if err != nil {
}
行业分析
这里面可以参考 sql.Row 结构:
// Row is the result of calling QueryRow to select a single row.
type Row struct {
// One of these two will be non-nil:
err error // deferred error for easy chaining
rows *Rows
}
仅限中文
使用场景
目前来说,Inserter, Deleter #92 和 Updater #93 的 Exec 方法都会返回一个 (sql.Result, error), 但是实际上用起来很恶心:
所以这里就会出现两次 error 的判断。实际上我们完全可以考虑返回一个 sql.Result 的实现,类似于:
行业分析
这里面可以参考 sql.Row 结构:
也就是将原本的返回值 (*Rows, error) 封装成了一个结构体。
可行方案
定义一个我们自己的 Result 结构体:
它会实现 sql.Result 接口,同时暴露一个 Err() 方法,用于返回 err 字段。
其它
你使用的是 eorm 哪个版本?
你设置的的 Go 环境?