Goで文字列を効率的に連結する方法 質問する

Goで文字列を効率的に連結する方法 質問する

Go では、a はstringプリミティブ型です。つまり、読み取り専用であり、それを操作するたびに新しい文字列が作成されます。

結果の文字列の長さを知らずに文字列を何度も連結したい場合、最適な方法は何でしょうか?

素朴な方法は次のとおりです。

var s string
for i := 0; i < 1000; i++ {
    s += getShortStringFromSomewhere()
}
return s

しかし、それはあまり効率的ではないようです。

ベストアンサー1

新しい方法:

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) 時間で実行されます。

おすすめ記事