Go で文字列を効率的に連結する方法
-
プラス(
+
)演算子 -
Print()
関数に複数の引数がある -
Go の
Join()
関数を使用 -
Go の
Sprintf()
メソッド -
Go の
bytes.Buffer
メソッド -
Go の
strings.Builder
メソッド -
+=
演算子を追加 - 異なる方法の比較
2つ以上の文字列を 1つの新しい文字列にマージする行為は文字列連結
と呼ばれます。文字列連結
は、プログラミングで最も広く実行されている操作の 1つです。この記事では、Go プログラミング言語の文字列を長所と短所と連結するさまざまな方法について説明します。
プラス(+
)演算子
+
を使用することは、文字列の連結に最も単純で最も広く使用されている方法です。+
演算子は連結演算子とも呼ばれます。
package main
import "fmt"
func main() {
str_1 := "Welcome to "
str_2 := "the Blog!!"
fmt.Println("str_1: ", str_1)
fmt.Println("str_2: ", str_2)
fmt.Println("Combined String: ", str_1+str_2)
}
出力:
str_1: Welcome to
str_2: the Blog!!
Combined String: Welcome to the Blog!!
Print()
関数に複数の引数がある
複数の文字列を引数として Go
の Print()
関数に渡すことができます。文字列は、文字列の間に空白を追加することで自動的に連結されます。
package main
import "fmt"
func main() {
fmt.Println("String", "Concatenation!!")
}
出力:
String Concatenation!!
Go の Join()
関数を使用
また、文字列のスライスと区切り文字を使用してそれらを結合し、単一の文字列を生成する文字列パッケージにある join()
関数を使用して文字列を連結することもできます。
構文:
func Join(str []string, sep string) string
ここで、str
は要素を連結する元となる文字列のスライスであり、sep
はスライス間に配置されたセパレーターです。
package main
import (
"fmt"
"strings" //for join() function
)
func main() {
str_slices := []string{"This", "is",
"String", "Concatenation!!"}
str_concat := strings.Join(str_slices, "-")
fmt.Println(str_concat)
}
出力:
This-is-String-Concatenation!!
Go の Sprintf()
メソッド
fmt
パッケージで Sprintf()
メソッドを使用することも、文字列連結の最も簡単な方法の 1つです。
package main
import "fmt"
func main() {
str_1 := "We will"
str_2 := " Rock"
str_3 := " You!!"
str_final := fmt.Sprintf("%s%s%s", str_1, str_2, str_3)
fmt.Println(str_final)
}
出力:
We will Rock You!!
Go の bytes.Buffer
メソッド
不要な string
オブジェクトを生成せずに文字列を連結する効率的な方法は bytes.Buffer
メソッドです。WriteString()
メソッドを使用して文字列をバイトバッファーに書き込み、それを文字列に変換できます。
package main
import (
"bytes"
"fmt"
)
func main() {
var byte_buf bytes.Buffer
byte_buf.WriteString("Hello ")
byte_buf.WriteString("World!!")
fmt.Println(byte_buf.String())
}
出力:
Hello World!!
Go の strings.Builder
メソッド
この方法では、他のメモリと比較して非常に少ないメモリを使用して、文字列を効率的に連結できます。
package main
import (
"fmt"
"strings"
)
func main() {
var str_build strings.Builder
str_build.WriteString("Hello ")
str_build.WriteString("World!!")
fmt.Println(str_build.String())
}
出力:
Hello World!!
+=
演算子を追加
これは、+
演算子を使用した文字列連結に似ていますが、前のものより少し短いです。+=
演算子は、指定された文字列の右側に新しい文字列を追加します。
package main
import "fmt"
func main() {
str_1 := "Hello "
str_1 += "World!!"
fmt.Println("Final String:", str_1)
}
出力:
Final String: Hello World!!
異なる方法の比較
bytes.Buffer
および strings.Builder
メソッドは、文字列連結の他のメソッドよりもかなり高速です。したがって、大量の文字列連結を実行する必要がある場合は、bytes.Buffer
メソッドと strings.Builder
メソッドを使用します。ただし、連結の数が少ない場合は、+
または+=
演算子を使用できます。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn