如何在go中有效地连接字符串

在 Go 中,astring是一种原始类型,这意味着它是只读的,每次对其进行操作都会创建一个新字符串

因此,如果我想在不知道结果字符串长度的情况下多次连接字符串,那么最好的方法是什么?

天真的方法是:

var s string

for i := 0; i < 1000; i++ {

s += getShortStringFromSomewhere()

}

return s

但这似乎不是很有效。

回答:

新方法:

从 Go 1.10 开始,有一种strings.Builder类型

旧方式:

使用bytes包。它有一个Buffer实现io.Writer.

package main

import (

"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

回到顶部