Go語言字符串高效拼接的實(shí)現(xiàn)
+號拼接
這種拼接最簡單,也最容易被我們使用,因?yàn)樗遣幌蘧幊陶Z言的,比如Go語言有,Java也有,它們是+號運(yùn)算符,在運(yùn)行時計(jì)算的。
var s string s+="昵稱"+":"+"志強(qiáng)1224"+"\n" s+="聯(lián)系方式QQ"+":"+"354662600"+"\n" fmt.Println(s)
fmt 拼接
這種拼接,借助于fmt.Sprint系列函數(shù)進(jìn)行拼接,然后返回拼接的字符串。
fmt.Sprint("昵稱",":","志強(qiáng)1224","\n","聯(lián)系方式QQ",":","354662600")
Join 拼接
這個是利用strings.Join函數(shù)進(jìn)行拼接,接受一個字符串?dāng)?shù)組,轉(zhuǎn)換為一個拼接好的字符串。
s:=[]string{"昵稱",":","志強(qiáng)1224","\n","聯(lián)系方式QQ",":","354662600"}
fmt.Println(strings.Join(s,""))
buffer 拼接
使用的是bytes.Buffer進(jìn)行的字符串拼接,它是非常靈活的一個結(jié)構(gòu)體,不止可以拼接字符串,還是可以byte,rune等,并且實(shí)現(xiàn)了io.Writer接口,寫入也非常方便。
var b bytes.Buffer
b.WriteString("昵稱")
b.WriteString(":")
b.WriteString("志強(qiáng)1224")
b.WriteString("\n")
b.WriteString("聯(lián)系方式QQ")
b.WriteString(":")
b.WriteString("354662600")
b.WriteString("\n")
fmt.Println(b.String())
builder 拼接
為了改進(jìn)buffer拼接的性能,從go 1.10 版本開始,增加了一個builder類型,用于提升字符串拼接的性能。它的使用和buffer幾乎一樣。
var b strings.Builder
b.WriteString("昵稱")
b.WriteString(":")
b.WriteString("志強(qiáng)1224")
b.WriteString("\n")
b.WriteString("聯(lián)系方式QQ")
b.WriteString(":")
b.WriteString("354662600")
b.WriteString("\n")
fmt.Println(b.String())
拼接函數(shù)改造
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()
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Golang使用gob實(shí)現(xiàn)結(jié)構(gòu)體的序列化過程詳解
Golang struct類型數(shù)據(jù)序列化用于網(wǎng)絡(luò)傳輸數(shù)據(jù)或在磁盤上寫入數(shù)據(jù)。在分布式系統(tǒng)中,一端生成數(shù)據(jù)、然后序列化、壓縮和發(fā)送;在另一端,接收數(shù)據(jù)、然后解壓縮、反序列化和處理數(shù)據(jù),整個過程必須快速有效2023-03-03
golang處理TIFF圖像的實(shí)現(xiàn)示例
本文介紹了在Go語言中處理TIFF圖像,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
Go結(jié)合JavaScript實(shí)現(xiàn)抓取網(wǎng)頁中的圖像鏈接
這篇文章主要為大家詳細(xì)介紹了Go語言如何結(jié)合JavaScript實(shí)現(xiàn)抓取網(wǎng)頁中的圖像鏈接,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
Go?channel結(jié)構(gòu)體源碼和讀寫和關(guān)閉過程詳解
這篇文章主要介紹了Go?channel結(jié)構(gòu)體源碼和讀寫和關(guān)閉過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
Go語言中reflect.DeepEqual函數(shù)的具體使用
本文主要介紹了Go語言中reflect.DeepEqual函數(shù)的具體使用,reflect.DeepEqual()函數(shù)是用來比較兩個值是否相等的方法,下面就來介紹一下,感興趣的可以了解一下2024-08-08
解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題
這篇文章主要介紹了解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Go語言輕松實(shí)現(xiàn)郵件發(fā)送通知功能的完全指南
在現(xiàn)代 Web 應(yīng)用中,郵件通知是一個不可或缺的功能,本文將深入解析一個基于 Go 語言 smtp 協(xié)議和 email 庫的郵件發(fā)送工具,需要的可以了解下2025-04-04
go 類型轉(zhuǎn)換方式(interface 類型的轉(zhuǎn)換)
這篇文章主要介紹了go 類型轉(zhuǎn)換方式(interface 類型的轉(zhuǎn)換),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05

