如何在 Go 中高效地串聯字串
Suraj Joshi
2023年1月30日
-
使用加號(
+
)運算子 -
在
Print()
函式中有多個引數 -
用
strings.Join
函式來串聯字串 -
Sprintf()
方法 -
bytes.Buffer
方法 -
strings.Builder
方法 -
用
+=
運算子串聯字串 - 不同方法的比較
將兩個或多個字串合併為一個新的字串的行為稱為字串串聯。字串連線是程式設計中執行最廣泛的操作之一。在本文中,我們將討論使用 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!!
用 strings.Join
函式來串聯字串
我們還可以使用字串包中存在的 join()
函式來連線字串,該函式需要一個字串切片和一個分隔符將它們連線起來以產生單個字串。
Go strings.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!!
Sprintf()
方法
在 fmt
包中使用 Sprintf()
方法也是字串連線的最簡單方法之一。
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!!
bytes.Buffer
方法
在不生成不必要的字串物件的情況下,連線字串的一種有效方法是 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!!
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
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn