1,strings 包

1,string 类型

在 Go 语言中,string 类型的值是不可变的。在进行字符串拼接的时候,Go 语言会把所有被拼接的字符串依次拷贝到一个崭新且足够大的连续内存空间中,并把持有相应指针值的 string 值作为结果返回。

因此,当程序中存在过多的字符串拼接操作的时候,会对内存的分配产生非常大的压力。

2,strings.Builder

与 string 相比,Builder 的优势主要体现在字符串拼接方面。与 string 一样,Builder 的底层也是一个 byte 类型的切片(字节切片),Builder 会按需扩容,不必每次拼接都需要拷贝。

使用 StringBuffer 或是 StringBuild 来拼接字符串,会比使用 + 或 += 性能高三到四个数量级。

当一个 Builder 中的空间够用时,其不会发生扩容,当不够用时,其会自动进行扩容。发生扩容时,会产生新的更大的内存空间,并将旧空间中的数据拷贝到新空间。

Builder 对象中的方法:

  • Write
  • WriteByte
  • WriteRune
  • WriteString
  • Grow:用于扩容
  • Reset:重置容器,其中的内容将被丢弃

3,strings.Reader

strings.Reader 类型是为了高效读取字符串而存在的。

Reader 对象中的方法:

  • ReadByte
  • ReadRune
  • ReadAt
  • Seek

4,其它方法

Go 的 strings 包中有很多字符串相关操作函数:

  • strings.Split:字符串分割
  • strings.Join:字符串连接
  • strings.Count:计数
  • strings.Compare:字符串比较
  • strings.Contains:是否包含
  • strings.HasPrefix:是否包含前缀
  • strings.HasSuffix:是否包含后缀
  • strings.Index:某字符的位置,不存在返回 -1
  • strings.LastIndex
  • strings.Repeat:重复字符串几次
  • strings.Replace:字符串替换
  • strings.Split:字符串分割
  • strings.Trim:字符串去除某字符
  • strings.TrimLeft
  • strings.TrimRight
  • strings.TrimSpace:去除首尾空格
  • strings.ToLower:转小写
  • strings.ToUpper:转大写
  • strings.Title:首字母转大写
  • strings.Fields:字符串变数组,将字符串以空白字符分割

2,bytes 包

strings 包主要面向的是 Unicode 字符和经过 UTF-8 编码的字符串,而 bytes 包面对的则主要是字节和字节切片。

在内部,bytes.Buffer 类型同样是使用字节切片作为内容容器的。

bytes.Buffer 类型的用途主要是作为字节序列的缓冲区,bytes.Buffer 是集读、写功能于一身的数据类型。

3,io 包

在这里插入图片描述

4,os 包

  • os.File:代表操作系统中的文件
  • os.Create:根据给定的路径创建一个新的文件
  • os.NewFile:它并不是创建一个新的文件,而是依据一个已经存在的文件的描述符,来新建一个包装了该文件的 File 值。
  • os.Open:打开一个文件并返回包装了该文件的 File 值
  • os.OpenFile:它其实是 os.Create 函数和 os.Open 函数的底层支持,它最为灵活。

模式值有:

  • os.O_RDONLY:只读
  • os.O_WRONLY:只写
  • os.O_RDWR:读写
  • os.O_APPEND:当向文件中写入内容时,把新内容追加到现有内容的后边
  • os.O_CREATE:当给定路径上的文件不存在时,创建一个新文件
  • os.O_EXCL:与 os.O_CREATE 一同使用,表示在给定的路径上不能有已存在的文件
  • os.O_SYNC:在打开的文件之上实施同步 I/O。它会保证读写的内容总会与硬盘上的数据保持同步
  • os.O_TRUNC:如果文件已存在,并且是常规的文件,那么就先清空其中已经存在的任何内容

(完。)