こんにちは。Tomoyuki(@tomoyuki65)です。
Go言語(Golang)で文字列結合をする際はいくつか方法がありますが、動的な文字列結合をしたい場合は“strings.Builder“を使うのが最適です。
この記事では、そんなstrings.Builderについて解説します。
Go言語(Golang)の動的な文字列結合にはstrings.Builderを使う!
Go言語で文字列結合をする場合、基本的な方法としてはプラス演算子やfmt.Sprintfを使って結合していくと思います。
package main
import (
"fmt"
)
func main() {
var str string
for i := 0; i < 5; i++ {
if len(str) > 0 {
str = str + " " + fmt.Sprintf("%v", i + 1)
} else {
str = fmt.Sprintf("%v", i + 1)
}
}
fmt.Println(str)
}
実行結果
1 2 3 4 5
このように動的な文字列結合をしていきたい場合は、strings.Builderを使うことによってメモリ使用量を抑えてパフォーマンスの向上が可能です。
※プラス演算子やfmt.Sprintfで文字列結合を繰り返すと、結合するたびに新しい文字列オブジェクトを作成しているため、無駄にメモリ使用量が増加していく。
package main
import (
"fmt"
"strings"
)
func main() {
var str strings.Builder
for i := 0; i < 5; i++ {
if len(str.String()) > 0 {
str.WriteString(fmt.Sprintf(" %v", i + 1))
} else {
str.WriteString(fmt.Sprintf("%v", i + 1))
}
}
fmt.Println(str.String())
}
実行結果
1 2 3 4 5
最後に
今回はstrings.Builderについて解説しました。
ループ処理などで動的に文字列を結合する場合や、多数の文字列を結合する場合には、プラス演算子を使うよりstrings.Builderを使うことでパフォーマンスの向上が可能になるため、ぜひ覚えておきましょう。
コメント