对数据类型为字节切片 ([]byte) 或字符串 (string) 的对象的处理是我们在 Go 语言编程过程中最常见的操作。经过前面章节的学习后,我们知道字节切片本质上是一个 “三元组 (array, len, cap)”,而 字符串则是一个 “二元组 (str, len)”(如下图所示):

Go 字节切片为内存中的字节序列提供了抽象,而 Go 字符串则代表了采用 UTF-8 编码的 Unicode 字符的数组。Go 标准库中的 bytes 包和 strings 包分别为字节切片和字符串这两种抽象类型提供了基本操作类 API。这里之所以将这两个标准库包放在一起说明,是因为这两个包提供的 API 接口十分相似,在后面的具体 API 使用举例时大家可以感受到这一点。
bytes 和 strings 包提供的 API 几乎涵盖了所有基本操作,大致可分为如下几类:
- 查找与替换
- 比较
- 拆分
- 拼接
- 修剪和变换
- 快速创建实现了 io.Reader 接口的实例
