golang接口的封装

Posted igoodful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang接口的封装相关的知识,希望对你有一定的参考价值。

 

一、声明接口

1 type Result interface 
2     LastInsertId() (int64, error)
3     RowsAffected() (int64, error)
4 

 

二、实现接口,这里却将接口作为成员变量,进而将接口的实现转换为接口的调用,仅仅是封装了接口,实际上并没有真的实现,而是坐等别人去实现

 1 //    一把锁
 2 //    一个结果集的假接口实现,表示需要的功能,让他人来具体实现。假装实现了某个接口,其实是调用了内部接口的对应方法
 3 type driverResult struct 
 4     sync.Locker
 5     resi        driver.Result
 6 
 7 //    Result 是对已执行 SQL 命令的总结,。
 8 //    LastInsertId() 会返回一个由数据库生成的整数, 这个整数是对命令的响应。 在插入一个新的数据行时, 这个整数通常来源于数据表中的自增数据列。
 9 //    并不是所有数据库都支持这个特性, 并且各个数据库在实现这个特性时使用的语句也会有所不同。
10 //    RowsAffected() 返回受到更新、插入或者删除操作影响的行数量, 并不是所有数据库或者所有数据库驱动都支持这个特性。
11 type Result interface 
12     LastInsertId() (int64, error)
13     RowsAffected() (int64, error)
14 
15 
16 func (dr driverResult) LastInsertId() (int64, error) 
17     dr.Lock()
18     defer dr.Unlock()
19     return dr.resi.LastInsertId()
20 
21 
22 func (dr driverResult) RowsAffected() (int64, error) 
23     dr.Lock()
24     defer dr.Unlock()
25     return dr.resi.RowsAffected()
26 

 

以上是关于golang接口的封装的主要内容,如果未能解决你的问题,请参考以下文章

Golang OOP继承组合接口

Golang OOP继承组合接口

tcpsock for Golang

[Golang]面向对象营养餐,一文管够(封装,继承,多态)

GoLang接口---下

『GoLang』面向对象