PR

Go言語(Golang)の動的な文字列結合にはstrings.Builderを使う!

基礎

こんにちは。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を使うことでパフォーマンスの向上が可能になるため、ぜひ覚えておきましょう。

 

この記事を書いた人
Tomoyuki

SE→ブロガーを経て、現在はWeb系エンジニアをしています!

Tomoyukiをフォローする
基礎
スポンサーリンク
Tomoyukiをフォローする

コメント

タイトルとURLをコピーしました