Go 语言的标准库 bytes
包提供了一组用于操作字节切片 ([]byte
) 的函数。这个包中的函数与 strings
包中的函数非常类似,但它们操作的是字节切片,而不是字符串。字节切片在 Go 语言中是一种非常重要的数据类型,广泛用于处理二进制数据和文本数据。bytes
包提供了很多处理字节切片的工具,包括但不限于查找、比较、切分、连接、替换、转换等操作。
func Compare(a, b []byte) int
: 比较两个字节切片,类似于 strings.Compare
。如果 a
比 b
小,返回 -1;如果相等,返回 0;如果 a
比 b
大,返回 1。func Contains(b, subslice []byte) bool
: 判断字节切片 b
是否包含 subslice
。func ContainsAny(b []byte, chars string) bool
: 判断字节切片 b
是否包含字符串 chars
中的任意一个字符。func ContainsRune(b []byte, r rune) bool
: 判断字节切片 b
是否包含 Unicode 字符 r
。func Count(b, sep []byte) int
: 计算 sep
在 b
中出现的次数。func Equal(a, b []byte) bool
: 判断两个字节切片是否相等。func EqualFold(s, t []byte) bool
: 判断两个字节切片在忽略大小写的情况下是否相等。func Index(b, sep []byte) int
: 返回 sep
在 b
中第一次出现的位置索引,如果未找到则返回 -1。func IndexAny(b []byte, chars string) int
: 返回 chars
中任意一个字符在 b
中第一次出现的位置索引,如果未找到则返回 -1。func IndexByte(b []byte, c byte) int
: 返回 c
在 b
中第一次出现的位置索引。func IndexRune(b []byte, r rune) int
: 返回 r
在 b
中第一次出现的位置索引。func LastIndex(b, sep []byte) int
: 返回 sep
在 b
中最后一次出现的位置索引。func LastIndexAny(b []byte, chars string) int
: 返回 chars
中任意一个字符在 b
中最后一次出现的位置索引。func LastIndexByte(b []byte, c byte) int
: 返回 c
在 b
中最后一次出现的位置索引。func Replace(s, old, new []byte, n int) []byte
: 返回一个新的字节切片,其中 s
中的前 n
个 old
被替换为 new
。如果 n
为 -1,则替换所有出现的 old
。func Map(mapping func(r rune) rune, s []byte) []byte
: 返回一个新的字节切片,其中 s
中的每个字符被 mapping
函数转换。func ToLower(s []byte) []byte
: 将字节切片中的所有字符转换为小写。func ToUpper(s []byte) []byte
: 将字节切片中的所有字符转换为大写。func ToTitle(s []byte) []byte
: 将字节切片中的所有字符转换为标题格式。func Trim(s []byte, cutset string) []byte
: 去除 s
开头和结尾处的 cutset
中的字符。func TrimFunc(s []byte, f func(r rune) bool) []byte
: 去除 s
开头和结尾处满足函数 f
的字符。func TrimSpace(s []byte) []byte
: 去除 s
开头和结尾的空白字符。func TrimPrefix(s, prefix []byte) []byte
: 去除 s
的前缀 prefix
。func TrimSuffix(s, suffix []byte) []byte
: 去除 s
的后缀 suffix
。func Split(s, sep []byte) [][]byte
: 将字节切片 s
按照分隔符 sep
切分,返回一个切片的切片。如果 sep
为空,则将 s
每个字节切分。func SplitN(s, sep []byte, n int) [][]byte
: 将 s
按 sep
切分成最多 n
个子切片。func SplitAfter(s, sep []byte) [][]byte
: 类似于 Split
,但保留分隔符。func SplitAfterN(s, sep []byte, n int) [][]byte
: 类似于 SplitN
,但保留分隔符。func Join(s [][]byte, sep []byte) []byte
: 将多个子字节切片连接为一个字节切片,使用 sep
作为分隔符。func NewReader(b []byte) *Reader
: 返回一个新的 Reader
,从字节切片 b
读取数据。func Repeat(b []byte, count int) []byte
: 返回一个新的字节切片,其中 b
重复 count
次。func Runes(s []byte) []rune
: 将字节切片 s
转换为 Unicode 字符切片。func ToValidUTF8(s, replacement []byte) []byte
: 将字节切片 s
中无效的 UTF-8 字符替换为 replacement
。bytes.Buffer
类型提供了一个用于高效地读写字节的缓冲区。
func (b *Buffer) Bytes() []byte
: 返回缓冲区中的字节切片。func (b *Buffer) String() string
: 返回缓冲区中的数据作为字符串。func (b *Buffer) Write(p []byte) (n int, err error)
: 将字节切片 p
写入缓冲区。func (b *Buffer) WriteString(s string) (n int, err error)
: 将字符串 s
写入缓冲区。func (b *Buffer) WriteByte(c byte) error
: 将单个字节写入缓冲区。func (b *Buffer) WriteRune(r rune) (n int, err error)
: 将单个 Unicode 字符写入缓冲区。func (b *Buffer) Read(p []byte) (n int, err error)
: 从缓冲区读取数据到字节切片 p
。func (b *Buffer) ReadByte() (byte, error)
: 读取单个字节。func (b *Buffer) ReadRune() (r rune, size int, err error)
: 读取单个 Unicode 字符。func (b *Buffer) Next(n int) []byte
: 返回缓冲区中的前 n
个字节,并将它们从缓冲区中移除。bytes.Reader
是另一个重要类型,它允许从字节切片读取数据。它的主要功能是实现了 io.Reader
、io.ReaderAt
、io.WriterTo
、io.Seeker
、io.ByteScanner
、io.RuneScanner
等接口。
func (r *Reader) Len() int
: 返回未读部分的长度。func (r *Reader) Size() int64
: 返回 Reader
的长度。func (r *Reader) Read(b []byte) (n int, err error)
: 将数据从 Reader
读入字节切片 b
。func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
: 从 Reader
的指定位置开始读数据。func (r *Reader) ReadByte() (byte, error)
: 读取一个字节。func (r *Reader) ReadRune() (r rune, size int, err error)
: 读取一个 Unicode 字符。func (r *Reader) Seek(offset int64, whence int) (int64, error)
: 移动 Reader
的读取位置。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。