Package bytes
对字节数组进行操作的包。功能和strings包相似.
bytes包提供的功能有:
和另一个字节数组切片的关系(逐字节比较大小,是否相等/相似,是否包含/包含次数,位置搜索,是否是前缀后缀)
2.字节数组切片和字符串的关系(字符串中是否含有字节数组所包含的rune,以及在字符串中的位置)
3.字节数组切片和rune的关系(字节数组中是否含有特定的或满足特定条件的rune,以及在字节数组中的位置)
4.字节数组切片和字节的关系(包含/位置)
5.分割分组,分组连结
6.大小写转换/标题化
7.修剪两端
8.按规则修改包含的每个rune
9.重复
10.替换
11.提供处理字节流的Buffer,可读可写(strings包没有提供)
12提供Reader
具体如下:
字节数组切片和字节数组切片的关系(逐字节比较,相等,相似,包含,出现的位置,包含次数,是否是前缀后缀)
//逐字节比较
//是否相等
//是否相似(只有大小写可能不同)
//后者是否为前者子串
//后者在前者中出现的位置
//sep在s中的重复次数。如果sep为空,返回len([]rune(s))+1
//后者是否是前者的前缀
//后者是否是前者的后缀
字符数组切片和字符串的关系(是否包含串里任何一个rune以及在字符串中的位置)
//字符串中是否有指定的runes中的任何一个
//ContainsAny调用此方法;判断字符串中是否含有指定的runes中的任何一个;并返回rune出现在字符串中的第一个位置
字符数组切片和rune的关系(包含,转换)
// rune是否存在于字节数组切片中
//从字节切片中寻找一个rune
//从字节切片中寻找满足条件的rune(的位置)
func LastIndexFunc(s []byte, f func(r rune) bool) int
//类型转换
字符数组切片和字节的关系(位置,)
//位置
操作字节数组切片(使用空格或者符合条件的rune分割分组,将分组连接成字符串,分割,大小写转换,修剪两端,按规则修改包含的每个rune,重复,替换)
//使用空格将字节分组
//使用特定的rune(满足条件的)将字节分隔分组
//连接成字符串 连接符为string(sep)
//分割
//分割后分隔符跟在每组结尾
//指定分割次数
//标题化(首字母大写)
//标题化(所有大写)
//按照指定的方法修改字节数组切片中的每个rune(返回的是副本)
//重复
//替换
type Reader
func NewReader(b []byte) *Reader
func (r *Reader) Len() int //未读的长度
func (r *Reader) Read(b []byte) (n int, err error)
func (r *Reader) ReadAt(b []byte, off int64) (n int, err error) //拷贝从指定位置到结束的全部字节到b中,不会改变状态
func (r *Reader) ReadByte() (byte, error)
func (r *Reader) ReadRune() (ch rune, size int, err error)
func (r *Reader) Reset(b []byte) //重置位置,并用b作为数据源
func (r *Reader) Seek(offset int64, whence int) (int64, error) //设置读取指针的位置到指定的offset,whence的取值为io.SeekStart ,io.SeekStart ,io.SeekEnd,分别表示绝对偏移,相对文件起始位置偏移,相对文件终止位置偏移
func (r *Reader) Size() int64 //可读的总大小
func (r *Reader) UnreadByte() error //撤销
func (r *Reader) UnreadRune() error //撤销
func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
type Buffer //strings包没有类似功能
func NewBuffer(buf []byte) *Buffer
func NewBufferString(s string) *Buffer
func (b *Buffer) Bytes() []byte //返回未读部分的切片
func (b *Buffer) Cap() int //Buffer总容量
func (b *Buffer) Grow(n int) //为Buffer扩充容量
func (b *Buffer) Len() int //未读部分的大小
func (b *Buffer) Next(n int) []byte //连续读出一段数据,返回切片
func (b *Buffer) Read(p []byte) (n int, err error) //读出len(p)长度的数据 而非cap(p)
func (b *Buffer) ReadByte() (byte, error) //读出字节
func (b *Buffer) ReadBytes(delim byte) (line []byte, err error)//连续读出 直到遇到delim(返回的切片包含delim)
func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error) //将io.reader作为数据源
func (b *Buffer) ReadRune() (r rune, size int, err error) //读一个rune,r, n := utf8.DecodeRune(b.buf[b.off:])
func (b *Buffer) ReadString(delim byte) (line string, err error) //读出string,直到遇到delim
func (b *Buffer) Reset() //重置,清空buffer
func (b *Buffer) String() string //将未读出部分作为string返回(不改变状态)
func (b *Buffer) Truncate(n int) //除了保留n长度的未读内容 其余未读内容清空,压缩BUFFER
func (b *Buffer) UnreadByte() error //撤销
func (b *Buffer) UnreadRune() error
func (b *Buffer) Write(p []byte) (n int, err error) //将p写入Buffer尾部
func (b *Buffer) WriteByte(c byte) error //将字节写入
func (b *Buffer) WriteRune(r rune) (n int, err error) //将Rune写入
func (b *Buffer) WriteString(s string) (n int, err error) //将字符串写入
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error) //将未读部分写入io.writer 并清空Buffer