Golang标准库——io-接口
接口
Read相关
Reader
Reader接口用于包装基本的读取方法。
type Reader interface {
//将数据读入到p中,直到读满p或者读取的过程中遇到错误,此时返回的n<len(p)同时err!=nil
//如果正常结束的话n也可能小于len(p),此时err==io.EOF(var EOF = errors.New("EOF"))
Read(p []byte) (n int, err error)
}
ReaderFrom
ReaderFrom实现从其他Reader读取数据
type ReaderFrom interface {
//从 r 中读取数据,直到 EOF 或发生错误。
//不会返回EOF错误
ReadFrom(r Reader) (n int64, err error)
}
ReaderAt
ReaderAt接口使得可以从指定偏移量处开始读取数据。
type ReaderAt interface {
//从基本输入源的偏移量 off 处开始,将 len(p) 个字节读取到 p 中。
//若一些数据可用但不到 len(p) 字节,ReadAt 就会阻塞直到所有数据都可用或产生一个错误。 在这一点上 ReadAt 不同于 Read。
//若 ReadAt 按查找偏移量从输入源读取,ReadAt 应当既不影响基本查找偏移量也不被它所影响。
ReadAt(p []byte, off int64) (n int, err error)
}
ByteReader/RuneReader
读取一个Byte或Rune。
type ByteReader interface {
ReadByte() (byte, error)
}
type RuneReader interface {
//读取单个UTF-8字符,返回其rune和该字符占用的字节数。
ReadRune() (r rune, size int, err error)
}
ByteScanner/RuneScanner
在ByteReader/RuneReader基础上增加了一个UnreadByte/UnreadRune方法,作用在于读取后回退一个,不能连续回退
type RuneScanner interface {
RuneReader
UnreadRune() error
}
Write相关
Writer
用于包装基本的写入方法。
type Writer interface {
//len(p) 字节数据从p写入底层的数据流
//返回写入的字节数(0 <= n <= len(p))和遇到的任何导致写入提取结束的错误
Write(p []byte) (n int, err error)
}
WriterTo
type WriterTo interface {
//将数据写入w直到没有数据可以写入或者遇到错误
//返回值n是写入的字节数,执行时遇到的任何错误也会被返回
WriteTo(w Writer) (n int64, err error)
}
WriterAt
type WriterAt interface {
//将p全部len(p)字节数据写入底层数据流的偏移量off位置
//WriteAt写入的对象是某个有偏移量的底层输出流
//WriteAt方法既不应影响底层的偏移量,也不应被底层的偏移量影响
WriteAt(p []byte, off int64) (n int, err error)
}
ByteWriter
type ByteWriter interface {
WriteByte(c byte) error
}
其他接口
Seeker
包装基本的移位方法,还有其与Reader、Writer接口结合的接口。
type Seeker interface {
//Seek方法设定下一次读写的位置
//偏移量为offset
//校准点由whence确定:0表示相对于文件起始;1表示相对于当前位置;2表示相对于文件结尾
Seek(offset int64, whence int) (int64, error)
}
Golang标准库——io-接口的更多相关文章
- Golang 标准库log的实现
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1406905 前 ...
- golang 标准库间依赖的可视化展示
简介 国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内 ...
- Golang 标准库提供的Log(一)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1405754 G ...
- golang标准库分析之net/rpc
net/rpc是golang提供的一个实现rpc的标准库.
- C 标准库IO缓冲区和内核缓冲区的区别
1.C标准库的I/O缓冲区 UNIX的传统 是Everything is a file,键盘.显示器.串口.磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也 ...
- golang 标准库
前言 不做文字搬运工,多做思路整理 就是为了能速览标准库,只整理我自己看过的...... 最好能看看英文的 标准库 fmt strconv string 跳转 golang知识库总结
- golang中的标准库IO操作
参考链接 输入输出的底层原理 终端其实是一个文件,相关实例如下: os.Stdin:标准输入的文件实例,类型为*File os.Stdout:标准输出的文件实例,类型为*File os.Stderr: ...
- golang标准库 context的使用
本文索引 问题引入 context包简介 示例 问题引入 goroutine为我们提供了轻量级的并发实现,作为golang最大的亮点之一更是备受推崇. goroutine的简单固然有利于我们的开发,但 ...
- Golang标准库——io-结构
结构 LimitedReader 定义 限制从Reader中读取的字节数. type LimitedReader struct { R Reader // underlying reader N in ...
随机推荐
- Android Studio 减小项目文件夹的大小和.gitignore文件配置
Build --> Clean Project 可以清理出很大一部分的空间 手动删除以下文件或者目录 Dir : ProjectFolder/buildDir : ProjectFolder/a ...
- 关于前端设置cookie
cookie既可以后端设置也可以在前端设置,例如登陆/注册功能,每次都要向服务器请求用户数据,这种就可以把cookie放到前端储存起来. 当网页要发http请求时,浏览器会先检查是否有相应的cooki ...
- cnetos 下 rar 解压
第一步:http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz 下载 文件 或 wget http://www.rarlab.com/rar/rarli ...
- Hibernate Generic DAO的介绍安装和使用
java 的包挺多,比c#多 . jar包一个名,解压缩出来又出来又叫另一个名 .搜索起来,内容都分散的很 http://mvnrepository.com maven库搜索 com.googlec ...
- git的一些常用操作
一.克隆默认分支 git clone 远程地址 二.克隆某一分支 git clone -b 分支名 远程地址 三.切换分支 git branch 分支名 四.一般开发提交的流程 1).查看本地状态 g ...
- BZOJ4386[POI2015]Wycieczki / Luogu3597[POI2015]WYC - 矩乘
Solution 想到边权为$1$的情况直接矩乘就可以得出长度$<=t$ 的路径条数, 然后二分check一下即可 但是拓展到边权为$2$,$3$ 时, 需要新建节点 $i+n$ 和 $i+2n ...
- 20172306《Java程序设计与数据结构》第一周总结
20172306<Java程序设计>第一周学习总结 教材学习内容总结 本周主要学习<Android和Java>书中的第二十三章和第二十六章. 第二十三章:Android简介 A ...
- javascript的常用事件
- 解决eclipse运行内存溢出方案
1.在工具栏找到Window -> Preference 2.双击选择的jdk 3.在VM输入以下设置运行的内存的大小即可(具体内存大小可以根据项目进行设置) -Xms800m -Xmx800m ...
- jupyter Notebook环境搭建
1.什么是jupyter notebook jupyter notebook是一种 Web 应用,能让用户将说明文本.数学方程.代码和可视化内容全部组合到一个易于共享的文档中.它可以直接在代码旁写出叙 ...