Go接口2
来源:互联网 发布:pb网络用语 编辑:程序博客网 时间:2024/06/04 19:35
type File struct {// ...}func (f *File) Read(buf []byte) (n int, err error)func (f *File) Write(buf []byte) (n int, err error)func (f *File) Seek(off int64, whence int) (pos int64, err error)func (f *File) Close() errortype IFile interface {Read(buf []byte) (n int, err error)Write(buf []byte) (n int, err error)Seek(off int64, whence int) (pos int64, err error)Close() error}type IReader interface {Read(buf []byte) (n int, err error)}type IWriter interface {Write(buf []byte) (n int, err error)}type ICloser interface {Close() error}//尽管这里File没有显示地继承接口,甚至不知道这些接口的存在//但是,只要File实现了该接口的函数,即可访问和赋值var file1 IFile = new(File)var file2 IReader = new(File)var file3 IWriter = new(File)var file4 ICloser = new(File)
接口赋值
接口赋值在Go语言中分为如下两种情况:
将对象实例赋值给接口;
将一个接口赋值给另一个接口。
首先看第一个方法
interface Integer intfunc (a Integer) Less (b Integer) bool{return a < b}func (a *Integer ) Add (b Integer) {*a+=b}type LessAdder interface{Less(b Integer) boolAdd(b Integer)}var a Integer=1//yesvar b LessAdder = &a//novar b LessAdder = a
原因在于 go语言可以根据
func (a Integer) Less (b Integer) bool{return a < b}
自动生成
func (a *Integer) Less (b Integer) bool{return *a < b}反之则不然
第二种方法
package onetype ReadWriter interface{Read(buf [] byte)(n int, err error)Write(buf [] byte)(n int, err error)}package twotype IStream interface{Read(buf [] byte)(n int, err error)Write(buf [] byte)(n int, err error)}var file1 one.ReadWriter = new(File)var file2 two.IStream = file1var file3 one.ReadWriter =file2//因为IWriter的方法列表是ReadWrtier方法列表的子集,所以可以将ReadWriter赋值给IWritervar file4 IWriter = file3
接口查询
爱上地方
0 0
- Go接口2
- Go接口
- Go 接口
- go 接口
- go 接口
- go 接口
- Go接口
- Go 接口
- Go接口 空接口
- go语言接口使用
- go - interface 接口
- go语言接口使用
- go的接口实现
- Go 方法、接口
- go 容器与接口
- Go语言的接口
- Go 语言接口
- go接口扩展注意事项
- ANDROID开发之SQLite详解
- apache archiva安装教程
- 大整数加减乘除及取模运算 C++实现
- Inno Setup入门(五)——添加readme文件
- 使用CSS3改变文本选中的默认颜色
- Go接口2
- Inno Setup入门(六)——在程序目录下创建文件夹
- AIR加载PDF
- 千万级的mysql数据库与优化方法
- Inno Setup入门(七)——提供安装语言选项
- DB2基本概念
- oracle bulk collect for in
- 简述bash的环境配置文件
- Inno Setup入门(八)——有选择性的安装文件