[Go] 为 *sql.DB 和 *sql.Tx 提取公共的查询接口
我博客的API接口部分有一个函数一开始是这样定义的:
1
|
|
后面发现这样定义不靠谱, 因为我很有可能需要在事务中调用这个函数。也就是说,还应该这样:
1
|
|
但是,同样的实现明显不能实现两遍。
考虑到 Get
方法只会调用 Tx/DB 的查询接口,所以我从 Tx/DB 中抽出了公共的查询接口:
1 2 3 4 5 |
|
于是,我的接口方法现在改成这样了:
1
|
|
这样的接口既支持传入*sql.DB
,也支持传入*sql.Tx
,可以说很优雅了。
其实我非常好奇,为什么官方没有抽象出这样的公共接口?sql.DB 和 sql.Tx 明明有很多完全相同的方法。
1 2 3 4 5 6 7 |
|
参考: