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 }

原文地址:https://www.cnblogs.com/igoodful/p/11520827.html

时间: 2024-10-11 15:17:29

golang接口的封装的相关文章

Golang 接口与反射知识要点

目录 Golang 接口与反射知识要点 1. 接口类型变量 2. 类型断言 3. 鸭子类型 4. 反射机制 5. reflect 包 TypeOf().ValueOf() Type().Kind() Interface() 6. 反射对象的可设置性 SetXXX(), CanSet() Elem() 7. Struct 的反射 NumField(), Type.Field(i int) Value.Field(i int) 参考文档 Golang 接口与反射知识要点 这篇文章以 Go 官方经典博

Delphi使用android的NDK是通过JNI接口,封装好了,不用自己写本地代码,直接调用

一.Android平台编程方式:      1.基于Android SDK进行开发的第三方应用都必须使用Java语言(Android的SDK基于Java实现)      2.自从ndk r5发布以后,已经允许完全用C/C++ 来开发应用或者游戏,而不再需要编写任何Java 的代码   Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序. 二.跨平台移动开发   Delphi使用android的NDK是通过JNI接口,封装好了,不用自己

微信公众平台消息接口开发-封装weixin.class.php(转)

一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一些中间数据     public $setFlag = false;

【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. 数组与指针 #include<stdio.h> #include<stdlib.h> void main1() { int a[10]

C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

在上篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及对应的对象模型,本篇继续微信小店的主题,介绍其中API接口的封装和测试使用.微信小店的相关对象模型,基本上包括了常规的商品.商品分组.货架.库存.订单这些模型,还有商品分类,商品分类属性.商品分类SKU.快递邮寄模板.图片管理等功能.本文介绍的接口封装也就是基于这些内容进行的,并针对接口的实现进行测试和使用. 1.商品管理接口的定义 前面文章介绍了微信小店的对象模型,如下所示. 这个图形基本上覆

移动互联网(一)短信和彩信等接口开发封装

在这个项目中涉及到了短信和彩信等功能,这个算是一个项目重要组成部分,曾经想过这个功能怎么开发,例如在我们永和系统中有很多订单,可以给用户办理会员卡等业务如何让用户及时知道自己卡里的消费情况?如何让用户心中存在安全感,试想想在你的银行卡每次消费或者转入.转出每一笔款的时候都有短信提示,你是不是无意中增加了一份安全感呢? 大家在想想目前的各类门户网站,以及我们常用的CSDN等论坛都提供有短信登录.以及短信验证码.短信注册等等同短信沾边的业务内容,所有的这些都是一个思想提高系统灵活性.易用性.安全性,

微信公众平台消息接口开发-封装weixin.class.php

原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一

【微信公众平台开发】百度周边搜索接口php封装

现在微信公众平台很多娱乐的,都有用到周边搜索功能,研究下比较简单,通过百度周边搜索接口封装如下: 调用格式: $wechatBaiduAPI = new WechatBaiduAPI(); $ret = $wechatBaiduAPI->Place_search($str_key,$location['x'].",".$location['y'] ); 参数说明: $query:搜素关键词 $location: 地理位置经纬度 $radius: 搜索半径 <?php cla

&lt;&lt;海闻电子发票接口 ESB 封装文档&gt;&gt;

<<海闻电子发票接口 ESB 封装文档>> 章节目录结构: 发票验证接口 发票开具接口 正文 发票验证接口 功能说明:请求系统在json报文体中发送[发票号码,发票代码,开票日期,发票金额]等信息,服务器返回发票是否有效信息. 请求格式: 节点:{base} 说明:主要包含[发票号码,发票代码,开票日期,发票金额]等信息. No. 字段名 类型 大小 必填 默认值 说明 1 invoiceNumber V 4 Y 产品编码,例如0330 2 SALES_CHANNEL V 10 Y