类型 []byte
的切片十分常见,Go 语言有一个 bytes 包专门用来解决这种类型的操做方法。函数
bytes 包和字符串包十分相似。并且它还包含一个十分有用的类型 Buffer:spa
import "bytes" type Buffer struct { ... }
这是一个长度可变的 bytes 的 buffer,提供 Read 和 Write 方法,由于读写长度未知的 bytes 最好使用 buffer。指针
Buffer 能够这样定义:var buffer bytes.Buffer
。code
或者使用 new 得到一个指针:var r *bytes.Buffer = new(bytes.Buffer)
。对象
或者经过函数:func NewBuffer(buf []byte) *Buffer
,建立一个 Buffer 对象而且用 buf 初始化好;NewBuffer 最好用在从 buf 读取的时候使用。内存
经过 buffer 串联字符串字符串
在下面的代码段中,咱们建立一个 buffer,经过 buffer.WriteString(s)
方法将字符串 s 追加到后面,最后再经过 buffer.String()
方法转换为 string:get
var buffer bytes.Buffer for { if s, ok := getNextString(); ok { //此处未展现 getNextString()方法 buffer.WriteString(s) } else { break } } fmt.Print(buffer.String(), "\n")
这种实现方式比使用 +=
要更节省内存和 CPU,尤为是要串联的字符串数目特别多的时候。string