如何在go中有效地连接字符串
在 Go 中,astring
是一种原始类型,这意味着它是只读的,每次对其进行操作都会创建一个新字符串。
因此,如果我想在不知道结果字符串长度的情况下多次连接字符串,那么最好的方法是什么?
天真的方法是:
var s stringfor i := 0; i < 1000; i++ {
s += getShortStringFromSomewhere()
}
return s
但这似乎不是很有效。
回答:
新方法:
从 Go 1.10 开始,有一种strings.Builder
类型
旧方式:
使用bytes
包。它有一个Buffer
实现io.Writer
.
package mainimport (
"bytes"
"fmt"
)
func main() {
var buffer bytes.Buffer
for i := 0; i < 1000; i++ {
buffer.WriteString("a")
}
fmt.Println(buffer.String())
}
这是在 O(n) 时间内完成的。
以上是 如何在go中有效地连接字符串 的全部内容, 来源链接: utcz.com/qa/398267.html