`
blackbeans
  • 浏览: 141753 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

golang之路--接口

 
阅读更多

在go中接口时无侵入的,只要两个接口有相同的方法列表,那么就可以互相赋值,而不像java中,两个接口可以相互赋值必须来自同一个继承树。go没有了继承树,接口可以相互赋值变得简单,原则只有一个含有相同的方法列表。

 

package mine
type IReader interface {
      read(buff []byte,len int)
}

package yours
type IExtReader interface {
      read(buff []byte,len int) 
}

 即使上述两个interface 属于不同的package 只要对于IReader的实例,那么同样也可以给IExtReader,如下有个File结构体

 

type struct File{
    Filename string
}

func (f *File) read(buff []byte,len int){
....
}

那么你调用的时候可以这样

file := &File{"test.cnf"}
var ireader = file
var iextreader = file 
var ireader = iextreader													
很爽吧,不需要你考虑这个接口从哪继承的,那个又从哪来的。忘掉继承树吧
分享到:
评论

相关推荐

    webapp-with-golang-anti-textbook

    《webapp-with-golang-anti-textbook》是一本旨在教会新手如何使用Go语言进行Web应用开发的指南书籍。本书通过一系列简单而真实的示例来教授核心概念,而不是通过抽象的理论或虚构的例子。在阅读本书的过程中,读者...

    开源项目-jdevelop-golang-rpi-extras.zip

    编写Go程序控制GPIO,需要使用如`golang.org/x/exp/io/gpio`这样的库,它们提供了操作GPIO的接口。 7. **并发编程**:Go语言内置的goroutine和channel使得并发编程变得简单而高效。在处理RFID读取时,可能需要同时...

    golang实现aes-256-cbc

    Golang标准库中的`crypto/aes`包提供了AES加密的接口,但需要注意的是,由于AES加密通常是以128位(16字节)为单位进行的,所以如果你有一个256位的密钥,你需要使用PBKDF2(Password-Based Key Derivation Function...

    开源项目-johnnadratowski-golang-neo4j-bolt-driver.zip

    johnnadratowski的golang-neo4j-bolt-driver项目正是利用Go语言特性,为Go开发者提供了与Neo4J数据库通信的接口。 四、golang-neo4j-bolt-driver特性 1. **简单易用**:库的API设计简洁,使得Go开发者能够快速上手...

    开源项目-NanXiao-golang-101-hacks.zip

    《Golang 101黑客:开源项目NanXiao深度探索》 开源项目NanXiao-golang-101-hacks.zip是一款专为Go语言初学者和爱好者设计的资源包,它提供了丰富的实践教程和技巧,帮助用户快速掌握Go语言的核心知识。Golang,又...

    golang-hex-dumper-源码.rar

    在现代软件开发中,调试和分析二进制数据是常见的任务之一。为了更好地理解和处理这些数据,开发者们常常需要借助十六进制转储工具。本篇文章将围绕"Go语言实现的十六进制转储工具源码"展开,通过对`golang-hex-...

    golang.org-master

    例如,`io`和`os`包是进行输入输出操作的基础,它们提供了一致的接口来处理文件和数据流。`net`包则让开发者可以轻松地进行TCP、UDP等网络通信。`encoding/json`和`encoding/xml`用于数据序列化和反序列化,使得数据...

    webpack-golang-wasm-async-loader:一个Webpack加载器,用于使用异步交互模型生成Golang WebAssembly捆绑包,以从JavaScript调用Golang代码

    Golang WebAssembly异步加载程序从Golang生成WASM程序包,并提供一个用于处理它的异步接口安装npm install --save-dev golang-wasm-async-loader 这是用于的加载器,用于从生成 (又名WASM)包。 然后为webpack生成...

    golang-book-examples-master.zip

    这个压缩包“golang-book-examples-master.zip”显然来源于一个关于Go语言的在线教程或书籍,其中的代码例子旨在帮助学习者深入理解Go语言的核心概念和特性。 Go语言,又称为Golang,是由Google开发的一种静态类型...

    Go-golang-micro-benchmarks-Go的微基准测试小集合

    6. **类型转换与接口操作**:探讨不同类型转换的开销,以及使用接口时的性能损失。 7. **算法实现**:比较不同算法或数据结构在Go中的实现,如排序、搜索等,分析其时间复杂度和空间复杂度。 8. **编译器优化**:...

    golang-1.15.5集合

    标题 "golang-1.15.5集合" 指的是 Go 语言的一个特定版本——1.15.5的软件包集合。...在1.15.5版本中,可能会包含对性能的优化、错误修复以及对新特性的支持,比如对其他语言的接口改进、内存管理和垃圾回收的优化等。

    The-Golang-Standard-Library-by-Example-master.zip

    2. **io** 和 **io/ioutil** 包:提供了一组基本的输入/输出接口,如Read、Write和Copy等,方便读写文件和网络数据。ioutil包则包含了一些常用的IO操作函数,如ReadFile和WriteFile。 3. **fmt** 包:是Go语言中的...

    golang-stdlib-ref.pdf(go标准库中文参考)

    Go语言标准库是Go编程语言...对于golang-stdlib-ref.pdf文档,作为一份标准库中文参考,它将有助于用户更好地理解和应用这些标准库,尤其是对于初学者或者需要快速回顾某个特定包功能的开发者来说,是一份宝贵的资源。

    PHP绑定golang库php-go-master.zip

    “php-go-master”是专门为PHP设计的一个库,它通过CGO(C语言的Go接口)实现了PHP与Golang之间的互操作性。CGO允许Go代码调用C语言的函数,反之亦然。因此,“php-go-master”库实质上是在PHP中定义了一个C接口,...

    开源项目-SaturnsVoid-GoLANG-Google-Chrome-Password-Recovery.zip

    Go语言,又称Golang,是Google开发的一种静态类型的、编译式的、跨平台的、现代化的编程语言,以其简洁的语法和高效的性能在系统编程和Web服务领域广泛应用。 Chrome浏览器在用户登录网站时,会提供保存密码的功能...

    Golang标准库-180910.7z

    Go语言的标准库是其强大功能的重要组成部分,包含了各种常用的工具和接口,覆盖了网络通信、文件I/O、并发编程、错误处理、数据格式化等多个方面。这个180910版的CHM文档很可能包含了以下主要知识点: 1. **基础库*...

    golang基础教程-go语言快速入门.zip

    Go语言,又称Golang,是Google在2009年推出的一种开源编程语言,由罗伯特·格瑞史莫、罗布·派克和肯特·贝克等大神设计。Go语言的设计目标是简单、高效、安全,特别适合构建网络服务和并发程序。它吸收了C语言的...

    开源项目-golang-vm-govm.zip

    GoVM通过命令行接口与用户交互,提供诸如`govm install`, `govm use`, `govm list`等命令,用户可以通过这些简单的命令完成Go版本的安装、切换和查询操作。 6. **版本安装**: 使用GoVM,用户可以下载并安装特定...

    Go-go-ole-golang的Win32OLE实现

    【描述】"go-ole - golang的Win32 OLE实现"揭示了`go-ole`库是Go语言中对Win32 OLE接口的封装,目的是为了让Go开发者能方便地调用和控制那些基于COM接口的Windows系统服务或应用程序。通过这个库,开发者可以创建、...

    golang标准api--bytes包练习

    `bytes.Buffer`实现了读写接口,可以当作一个可变大小的字节数组来使用。在需要频繁地向一个数据结构追加字节而不创建新切片的情况下,`Buffer`是非常有效的。例如,在`stu`文件中可能包含一个`Buffer`实例,用于...

Global site tag (gtag.js) - Google Analytics