go - 当我们可以存储在字符串变量中时,缓冲区的用途是什么?

标签 go

当我只能连接字符串时,为什么要使用缓冲区?

伪代码如下

var buffer bytes.Buffer 
for i := 0; i < 200; i++ {
    buffer.WriteString(strconv.Itoa(i))
}
fmt.Println(buffer.String())

对比

buffer := ""
for i := 0; i < 200; i++ {
    buffer += strconv.Itoa(i)
}
fmt.Println(buffer)

最佳答案

缓冲区以 block 的形式增长以分摊内存分配。

因为字符串是不可变的,所以循环中的每次迭代都必须分配一个新字符串。

关于go - 当我们可以存储在字符串变量中时,缓冲区的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684751/

相关文章:

go - 设置内置 HTTP 请求超时的最佳方式

go - 如何为一元 rpc 定义响应 header

linux - 如何同时运行多个 Go lang http 服务器并使用命令行测试它们?

go - 为什么 sync.WaitGroup、sync.Mutex 不引用 channel 、 slice 等类型?

go - Kubernetes client-go Remotecommand Stream 何时完成?

sql-server - Golang 连接到 SQL Server 错误 - "TLS Handshake failed: Cannot read handshake packet: EOF"

go - 如何在运行时检测 $GOHOSTOS 和 $GOHOSTARCH?

go - Golang 中的管道字符

arrays - 将新 slice 中的所有值默认为设置的默认值GoLang

go - 使用 plotinum 绘制具有对数刻度 y 轴的图形