bytes 字节切片处理包
Go语言中,bytes包提供了许多用于处理字节切片(即[]byte)的函数,bytes包在处理二进制数据时很常用,例如网络编程、二进制文件操作等。这篇笔记我们介绍bytes包的使用。
常用函数介绍
bytes.Compare()函数按字典序逐个字节比较两个字节切片内的字节大小。
bytes.Compare(a, b []byte) int
bytes.Equal()函数用于判断两个字节切片的内容是否完全相同。
bytes.Equal(a, b []byte) bool
bytes.Contains()用于判断字节切片b是否包含字节切片subslice。
bytes.Contains(b, subslice []byte) bool
bytes.HasPrefix()用于判断字节切片b是否以字节切片prefix开头。
bytes.HasPrefix(b, prefix []byte) bool
bytes.HasSuffix()用于判断字节切片b是否以字节切片suffix结尾。
bytes.HasSuffix(b, suffix []byte) bool
bytes.Join()用于将多个字节切片使用sep作为分隔符连接成一个切片。
bytes.Join(s [][]byte, sep []byte) []byte
bytes.Split()用于将字节切片b按照分隔符sep分割成多个字节切片。
bytes.Split(b, sep []byte) [][]byte
bytes.Replace()用于将切片b中的前n个old子切片替换为new子切片,n为-1时表示替换所有匹配项。
bytes.Replace(b, old, new []byte, n int) []byte
内存缓冲区
bytes.Buffer是实现了io.Reader和io.Writer的内存缓冲区,它可以实现直接通过字节流的方式读写切片内的内容。我们可以使用bytes.NewBuffer()函数基于一个现有的切片创建缓冲区,也可以直接创建bytes.Buffer结构体返回一个动态长度的内存缓冲区。
bytes.NewBuffer(buf []byte) *bytes.Buffer
buf := bytes.Buffer{}
下面是一个使用内存缓冲区的例子。
package main
import (
"bytes"
"fmt"
)
func main() {
buf := bytes.Buffer{}
buf.Write([]byte("Hello,"))
buf.Write([]byte(" world!"))
fmt.Println(buf.String())
}
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。