Go語言字串高效拼接
+號拼接
這種拼接最簡單,也最容易被我們使用,因為它是不限程式語言的,比如Go語言有,Java也有,它們是
+
號運算子,在執行時計算的。
var s string s+="暱稱"+":"+"志強1224"+"\n" s+="聯絡方式QQ"+":"+"354662600"+"\n" fmt.Println(s)
fmt 拼接
這種拼接,藉助於
fmt.Sprint
系列函式進行拼接,然後返回拼接的字串。
fmt.Sprint("暱稱",":","志強1224","\n","聯絡方式QQ",":","354662600")
Join 拼接
這個是利用strings.Join
函式進行拼接,接受一個字串陣列,轉換為一個拼接好的字串。
s:=[]string{"暱稱",":","志強1224","\n","聯絡方式QQ",":","354662600"} fmt.Println(strings.Join(s,""))
buffer 拼接
使用的是
bytes.Buffer
進行的字串拼接,它是非常靈活的一個結構體,不止可以拼接字串,還是可以
byte
,
rune
等,並且實現了
io.Writer
介面,寫入也非常方便。
var b bytes.Buffer b.WriteString("暱稱") b.WriteString(":") b.WriteString("志強1224") b.WriteString("\n") b.WriteString("聯絡方式QQ") b.WriteString(":") b.WriteString("354662600") b.WriteString("\n") fmt.Println(b.String())
builder 拼接
為了改進buffer拼接的效能,從go 1.10 版本開始,增加了一個builder型別,用於提升字串拼接的效能。它的使用和buffer幾乎一樣。
var b strings.Builder b.WriteString("暱稱") b.WriteString(":") b.WriteString("志強1224") b.WriteString("\n") b.WriteString("聯絡方式QQ") b.WriteString(":") b.WriteString("354662600") b.WriteString("\n") fmt.Println(b.String())
拼接函式改造
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() }