Buffer
Buffer
在 Go 语言中,Buffer 属于 bytes 包,可以使用这些包来操作字符串的字节。例如,假设有一个字符串,可以使用 len 函数读取字符串的长度,它将返回数字长度,但如果字符串太大呢?如果想以数据块的形式进行计算,在这种情况下,可以使用 Buffer。 Buffer 允许处理任何大小的动态长度,使其灵活。
Buffer 允许提供缓冲存储,用于存储数据,并在需要时访问这些数据。如果字符串的大小较大,或者需要存储大量字符串到一个变量中,那么可以创建一个缓冲区变量,并将数据存储到该变量中。
追加数据
可通过 WriteString 方法进行字符串数据的追加,该方法返回要追加的字符串的长度及 nil,如果字符串太长,则会抛出 ErrTooLarge 错误。
package main
import (
"bytes"
"fmt"
)
func main() {
var strBuffer bytes.Buffer
n, err := strBuffer.WriteString("Hello")
fmt.Println(n, err) // 5 nil
n, err = strBuffer.WriteString(" World")
fmt.Println(n, err) // 6 nil
fmt.Println(strBuffer.String()) // Hello World
}
写入数据
可通过 io.Writer 接口向缓存内存中写入数据,其也是追加操作:
package main
import (
"bytes"
"fmt"
)
func main() {
var strBuffer bytes.Buffer
fmt.Fprintf(&strBuffer, "It is number: %d, This is a string: %v ", 10, "Bridge")
strBuffer.WriteString("[DONE]")
fmt.Println("The string buffer output is", strBuffer.String())
}
字节写入
可通过字节切片向缓存区写入内容:
package main
import (
"bytes"
"fmt"
)
func main() {
var byteString bytes.Buffer
byteString.Write([]byte("Hello"))
// byteString.WriteString(" World")
fmt.Fprintf(&byteString, " World")
fmt.Println(byteString.String())
}
获取长度
可通过 Len 方法获取缓冲区字符串的长度:
package main
import (
"bytes"
"fmt"
)
func main() {
var strByyte bytes.Buffer
strByyte.Write([]byte("kumar"))
fmt.Println(strByyte.Len()) // 5
}
读取数据
可通过 Read 等方法进行数据的读取:
package main
import (
"bytes"
"fmt"
)
func main() {
var strByte bytes.Buffer
strByte.Write([]byte("Hello World"))
content := make([]byte, 5)
readed, _ := strByte.Read(content)
fmt.Println(readed) // 5
}
更多方法
更多方法和示例可参考官方文档。