【发布时间】:2014-01-21 17:47:11
【问题描述】:
我为独立和嵌入式使用(例如使用 CustomerRepository)创建了一个“基础”存储库结构,以避免一直检查错误,并为 Gorp(数据库工具包)创建一个抽象,并创建一个 API更符合我的喜好。
我检查这个基本结构中的错误,如果发现一个错误,就会恐慌,就好像我认为确实存在一个错误,然后表明一个开发错误,代码也可能恐慌,因为验证等应该在数据获取之前发生到存储库。
我发现了这个问题Go Error Handling Techniques,但它不包括像我所做的那样将错误包装在基本结构中并且只是恐慌。
我所做的是否是惯用的 Go?
package repositories
import (
"github.com/coopernurse/gorp"
)
type Repository struct {
Gorp gorp.SqlExecutor
}
func (r *Repository) GetById(i interface{}, id int) interface{} {
obj, err := r.Gorp.Get(i, id)
if err != nil {
panic(err)
}
return obj
}
func (r *Repository) Get(holder interface{}, query string, args ...interface{}) interface{} {
if err := Gorp.SelectOne(holder, query, args); err != nil {
panic(err)
}
}
func (r *Repository) Select(i interface{}, query string, args ...interface{}) {
if _, err := Gorp.Select(holder, query, args); err != nil {
panic(err)
}
}
func (r *Repository) Insert(list ...interface{}) {
if err := r.Gorp.Insert(list...); err != nil {
panic(err)
}
}
func (r *Repository) Update(list ...interface{}) int64 {
count, err := r.Gorp.Update(list...)
if err != nil {
panic(err)
}
return count
}
func (r *Repository) Delete(list ...interface{}) int64 {
count, err := r.Gorp.Delete(list...)
if err != nil {
panic(err)
}
return count
}
【问题讨论】:
标签: go