Go语言中接口组合的实现方法
本文实例讲述了Go语言中接口组合的实现方法。分享给大家供大家参考。具体实现方法如下:
在Go语言中,可以在接口A中组合其它的一个或多个接口(如接口B、C),这种方式等价于在接口A中添加接口B、C中声明的方法。
//接口中可以组合其它接口,这种方式等效于在接口中添加其它接口的方法
type Reader interface {
read()
}
type Writer interface {
write()
}
//定义上述两个接口的实现类
type MyReadWrite struct{}
func (mrw *MyReadWrite) read() {
fmt.Println("MyReadWrite...read")
}
func (mrw *MyReadWrite) write() {
fmt.Println("MyReadWrite...write")
}
//定义一个接口,组合了上述两个接口
type ReadWriter interface {
Reader
Writer
}
//上述接口等价于:
type ReadWriterV2 interface {
read()
write()
}
//ReadWriter和ReadWriterV2两个接口是等效的,因此可以相互赋值
func interfaceTest0104() {
mrw := &MyReadWrite{}
//mrw对象实现了read()方法和write()方法,因此可以赋值给ReadWriter和ReadWriterV2
var rw1 ReadWriter = mrw
rw1.read()
rw1.write()
fmt.Println("------")
var rw2 ReadWriterV2 = mrw
rw2.read()
rw2.write()
//同时,ReadWriter和ReadWriterV2两个接口对象可以相互赋值
rw1 = rw2
rw2 = rw1
}
希望本文所述对大家的Go语言程序设计有所帮助。
相关推荐
-
Go语言中io.Reader和io.Writer的详解与实现
一.前言 也许对这两个接口和相关的一些接口很熟悉了,但是你脑海里确很难形成一个对io接口的继承关系整天的概貌,原因在于godoc缺省并没有像javadoc一样显示官方库继承关系,这导致了我们对io接口的继承关系记忆不深,在使用的时候还经常需要翻文档加深记忆. 本文试图梳理清楚Go io接口的继承关系,提供一个io接口的全貌. 二.io接口回顾 首先我们回顾一下几个常用的io接口.标准库的实现是将功能细分,每个最小粒度的功能定义成一个接口,然后接口可以组成成更多功能的接口. 最小粒度的接口 typ
-
Go语言接口用法实例
本文实例讲述了Go语言接口用法.分享给大家供大家参考.具体分析如下: 接口类型是由一组方法定义的集合. 接口类型的值可以存放实现这些方法的任何值. 复制代码 代码如下: package main import ( "fmt" "math" ) type Abser interface { Abs() float64 } func main() { var a Abser f := MyFloat(-math.Sqrt2)
-
Google Voice 短信发送接口PHP开源版(2010.5更新)
1,支持群发 2,中文转成拼音发送 如果需要群发多帐号用英文逗号(,)分隔(86159..,86159..),消息内容不支持中文,当您输入中文的时候系统会自动转换为拼音(为了区分是拼音,拼音首字母大写),保证消息能正常发送(输入"我是旋风"短信内容为"Wo Shi Xuan Feng"). 复制代码 代码如下: <?php /* 提示:如果需要群发多帐号用英文逗号(,)分隔(86159..,86159..),消息内容不支持中文, 当您输入中文的时候系统会自动转
-
Go语言服务器开发实现最简单HTTP的GET与POST接口
本文实例讲述了Go语言服务器开发实现最简单HTTP的GET与POST接口.分享给大家供大家参考.具体分析如下: Go语言提供了http包,可以很轻松的开发http接口.以下为示例代码: 复制代码 代码如下: package webserver import ( "encoding/json" "fmt" "net/http" "time" ) func WebServerB
-
php调用google接口生成二维码示例
复制代码 代码如下: <?php $data = isset($_GET['t']) ? $_GET['t'] : 'http://www.XXX.com'; $size = isset($_GET['size']) ? $_GET['size'] : '150x150'; $logo = isset($_GET['logo']) ? $_GET['logo'] :"./image/logo.jpg"; $chl = urlencode($logo); $png = "
-
GO语io包的常用接口
本文实例分析了GO语io包的常用接口.分享给大家供大家参考.具体分析如下: 我没有 C/C++ 基础,没有接口的概念,且从 Python 投奔而来,Python 的极简主义(一个结果往往只提供一个方法),让我在 Golang 中非常迷糊,特别是文件的读写操作,因为 Go 的文件读写操作有很多的方法,让我不知道怎么选择.直到我学习了 interface 的概念,然后由看了 package io 后才慢慢理解,也渐渐的喜欢上了 Golang 的灵活性.以我的经验来说,接口是一个很重要的知识点,是一系
-
Golang极简入门教程(二):方法和接口
方法 在 Golang 中没有类,不过我们可以为结构体定义方法.我们看一个例子: 复制代码 代码如下: package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } // 结构体 Vertex 的方法 // 这里的方法接收者(method receiver)v 的类型为 *Vertex func (v *Vertex) Abs() float64
-
Google PR查询接口checksum新算法第1/2页
取而代之的是一大段"In your email, please send us the entire code displayed below"之类的Google terms_of_service错误提示信息.看来是原先的接口已经失效了. 但我装在Firefox工具栏的扩展插件SearchStatus仍然能够正常解析出每个受访页的PR值,找到 SearchStatus 的插件包解开来看源码,果然是使用了不一样的验证码生成算法,在原先的 checksum 生成之后,还需要再进行一次计算,
-
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
首先引入JavaScript API文件 <script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script> 此API提供的接口共有6个,geoip_country_code(){国家代码},geoip_country_ name(){国家名称},geoip_city() {城市名称},geoip_region(){地区代码},geoip_latit
-
Go语言中接口组合的实现方法
本文实例讲述了Go语言中接口组合的实现方法.分享给大家供大家参考.具体实现方法如下: 在Go语言中,可以在接口A中组合其它的一个或多个接口(如接口B.C),这种方式等价于在接口A中添加接口B.C中声明的方法. 复制代码 代码如下: //接口中可以组合其它接口,这种方式等效于在接口中添加其它接口的方法 type Reader interface { read() } type Writer interface { write() } //定义上述两个接口的实现类
-
一文带你了解Go语言中接口的使用
目录 接口 接口的实现 接口类型变量 空接口 类型断言 类型断言变种 type switch 小结 接口 在 Go 语言中,接口是一种抽象的类型,是一组方法的集合.接口存在的目的是定义规范,而规范的细节由其他对象去实现.我们来看一个例子: import "fmt" type Person struct { Name string } func main() { person := Person{Name: "cmy"} fmt.Println(person) //
-
Go语言中调用外部命令的方法总结
目录 引子 运行命令 显示输出 显示到标准输出 输出到文件 发送到网络 保存到内存对象中 输出到多个目的地 运行命令,获取输出 分别获取标准输出和标准错误 标准输入 环境变量 检查命令是否存在 封装 总结 引子 在工作中,我时不时地会需要在Go中调用外部命令.前段时间我做了一个工具,在钉钉群中添加了一个机器人,@这个机器人可以让它执行一些写好的脚本程序完成指定的任务.机器人倒是不难,照着钉钉开发者文档添加好机器人,然后@这个机器人就会向一个你指定的服务器发送一个POST请求,请求中会附带文本消息
-
C语言中可变参数的使用方法示例
前言 在C语言程序编写中我们使用最多的函数一定包括printf以及很多类似的变形体.这个函数包含在C库函数中,定义为 int printf( const char* format, ...); 除了一个格式化字符串之外还可以输入多个可变参量,如: printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s", i, s); 格式化字符串的判断本章暂且不论,下面分析一
-
在易语言中使用类型库的方法
如何在易语言中使用类型库 如何在易语言中使用类型库,我们下面用一个小例程来说明,首先打开"易语言" 选择"工具"→"类型库及OCX组件-〉支持库"注册word类型库. 然后左边支持库表中会出现word的类型库 然后我们在窗体中画上两个按钮以便我们使用,至于旁边画的那个com控件我们等一下 现在我们开始写入代码,如果按照com对象的方法来操作word,我们就要先创建一个word的对象,连接"Word.Application",其
-
Go语言中定时任务库Cron使用方法介绍
目录 快速入门 Cron表达式格式 预定义时间表 设置时区 常用的方法介绍 快速入门 安装cron,注意这里安装的是v3版本.新版本和旧版时间使用有所区别 go get github.com/robfig/cron/v3@v3.0.0 在项目中导入 import "github.com/robfig/cron/v3" v3版本的github.com/robfig/cron/v3默认解析器符合Cron 维基百科页面所描述的标准用法大致如下 package main import ( &q
-
C语言中函数返回字符串的方法汇总
在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来的是个地址,函数也就会拷贝该地址供自己使用.同样return返回时,如果返回一个值,函数会将该值拷贝一份以提供给主调函数使用,返回的是一个指针(也就是地址),自然拷贝的就是一个地址,供主调函数使用. 先给出一个错误的例子: #include <stdio.h> #include <strin
-
go语言中排序sort的使用方法示例
前言 sort包中实现了3种基本的排序算法:插入排序.快排和堆排序.和其他语言中一样,这三种方式都是不公开的,他们只在sort包内部使用.所以用户在使用sort包进行排序时无需考虑使用那种排序方式,sort.Interface定义的三个方法:获取数据集合长度的Len()方法.比较两个元素大小的Less()方法和交换两个元素位置的Swap()方法,就可以顺利对数据集合进行排序.sort包会根据实际数据自动选择高效的排序算法. 已知一个的struct组成的数组,现在要按照数组中的一个字段排序.pyt
-
C语言中的各种文件读写方法小结
前言 找工作的时候,曾经用C语言练习过一段时间的算法题目,也在几个还算出名的OJ平台有过还算靠谱的排名.之前以为C语言只限于练习一下算法,但是工作中的一个问题解决让我意识到C语言的用处还是非常广泛的.下面介绍一下,如果用C语言来操作文件保存一个字符串,和读取一个字符串.算法中往往都是printf来打印出结果,但是真实工作中往往通过文件来进行一些持久化的存储工作. C-File I/O 文件的I/O操作是每一门语言的重点,因此这里我先来介绍一下如何用C语言去进行文件的I/O操作.
-
易语言中系统音量的使用方法
大家在学习易语言中,可能会制作一些播放器之类的软件时,一般会有系统音量的设置,调节系统音量的大小.今天我就教大家如何实现这个功能,希望能对大家有所帮助. 1.首先打开易语言,创建windows窗口程序. 2.在扩展组件中找到系统音量,拖动并创建. 3.依据个人需求设计页面,如下图所示. 1.调试工作 双击启动窗口,输入下图源码.其中的设备标识在音量类型中依据个人需求选择. 2.为了了解一些数值,我们写下下图的源码进行调试. 3.按下F5进行调试,然后查看结果. 1.核心工作 我们发现65535这
随机推荐
- ASP.NET MVC中为DropDownListFor设置选中项的方法
- PHP实现数字补零功能的2个函数介绍
- Vue组件实例间的直接访问实现代码
- 理解AngularJs指令
- 网站页面自动跳转实现方法PHP、JSP(下)
- jQuery Mobile + PHP实现文件上传
- php 反斜杠处理函数addslashes()和stripslashes()实例详解
- Android自定义view实现阻尼效果的加载动画
- android使用SharedPreferences进行数据存储
- javascript 返回数组中不重复的元素
- 详解poi+springmvc+springjdbc导入导出excel实例
- JavaScript 事件的一些重要说明
- 浅谈ASP.NET的Postback 实例代码第1/2页
- sqlserver自动增长列引起的问题解决方法
- z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
- LAMP服务器性能优化技巧之Apache服务器优化
- c# 配置文件App.config操作类库的方法
- android之RatingBar控件用法详解
- 个人站长制做网页常用的php代码
- Python中动态检测编码chardet的使用教程