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()
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章