Go language string efficient concatenation implementation
- 2020-06-19 10:33:29
- OfStack
Splicing +.
This splicing is the easiest and easiest for us to use, because it's available in any programming language, like Go, Java, which are + operators that are evaluated at runtime.
var s string
s+=" nickname "+":"+" zhiqiang 1224"+"\n"
s+=" contact QQ"+":"+"354662600"+"\n"
fmt.Println(s)
fmt stitching
This concatenation is done with the help of the fmt.Sprint series functions, which then return the concatenated string.
fmt.Sprint(" nickname ",":"," zhiqiang 1224","\n"," contact QQ",":","354662600")
Join stitching
This is the use of strings. Join function to concatenate, accept an array of strings, converted to a concatenated string.
s:=[]string{" nickname ",":"," zhiqiang 1224","\n"," contact QQ",":","354662600"}
fmt.Println(strings.Join(s,""))
buffer stitching
It USES bytes. Buffer for string concatenation. It is a very flexible structure, which can not only concatenate strings, but also byte,rune and so on.
var b bytes.Buffer
b.WriteString(" nickname ")
b.WriteString(":")
b.WriteString(" zhiqiang 1224")
b.WriteString("\n")
b.WriteString(" contact QQ")
b.WriteString(":")
b.WriteString("354662600")
b.WriteString("\n")
fmt.Println(b.String())
builder stitching
To improve the performance of buffer concatenation, starting with version 1.10 of go, an builder type has been added to improve the performance of string concatenation. Its use is almost the same as buffer.
var b strings.Builder
b.WriteString(" nickname ")
b.WriteString(":")
b.WriteString(" zhiqiang 1224")
b.WriteString("\n")
b.WriteString(" contact QQ")
b.WriteString(":")
b.WriteString("354662600")
b.WriteString("\n")
fmt.Println(b.String())
Reconstruction of splicing function
func StringPlus(p []string) string{
var s string
l:=len(p)
for i:=0;i<l;i++{
s+=p[i]
}
return s
}
func StringFmt(p []interface{}) string{
return fmt.Sprint(p...)
}
func StringJoin(p []string) string{
return strings.Join(p,"")
}
func StringBuffer(p []string) string {
var b bytes.Buffer
l:=len(p)
for i:=0;i<l;i++{
b.WriteString(p[i])
}
return b.String()
}
func StringBuilder(p []string) string {
var b strings.Builder
l:=len(p)
for i:=0;i<l;i++{
b.WriteString(p[i])
}
return b.String()
}