Go語(yǔ)言字符串高效拼接的實(shí)現(xiàn)
+號(hào)拼接
這種拼接最簡(jiǎn)單,也最容易被我們使用,因?yàn)樗遣幌蘧幊陶Z(yǔ)言的,比如Go語(yǔ)言有,Java也有,它們是+號(hào)運(yùn)算符,在運(yùn)行時(shí)計(jì)算的。
var s string s+="昵稱(chēng)"+":"+"志強(qiáng)1224"+"\n" s+="聯(lián)系方式QQ"+":"+"354662600"+"\n" fmt.Println(s)
fmt 拼接
這種拼接,借助于fmt.Sprint系列函數(shù)進(jìn)行拼接,然后返回拼接的字符串。
fmt.Sprint("昵稱(chēng)",":","志強(qiáng)1224","\n","聯(lián)系方式QQ",":","354662600")
Join 拼接
這個(gè)是利用strings.Join函數(shù)進(jìn)行拼接,接受一個(gè)字符串?dāng)?shù)組,轉(zhuǎn)換為一個(gè)拼接好的字符串。
s:=[]string{"昵稱(chēng)",":","志強(qiáng)1224","\n","聯(lián)系方式QQ",":","354662600"} fmt.Println(strings.Join(s,""))
buffer 拼接
使用的是bytes.Buffer進(jìn)行的字符串拼接,它是非常靈活的一個(gè)結(jié)構(gòu)體,不止可以拼接字符串,還是可以byte,rune等,并且實(shí)現(xiàn)了io.Writer接口,寫(xiě)入也非常方便。
var b bytes.Buffer b.WriteString("昵稱(chēng)") 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 版本開(kāi)始,增加了一個(gè)builder類(lèi)型,用于提升字符串拼接的性能。它的使用和buffer幾乎一樣。
var b strings.Builder b.WriteString("昵稱(chēng)") 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() }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
GO語(yǔ)言并發(fā)編程之互斥鎖、讀寫(xiě)鎖詳解
這篇文章主要介紹了GO語(yǔ)言并發(fā)編程之互斥鎖、讀寫(xiě)鎖詳解,本文是GO并發(fā)編程實(shí)戰(zhàn)一書(shū)的樣章,詳細(xì)講解了互斥鎖、讀寫(xiě)鎖,然后給出了一個(gè)完整示例,需要的朋友可以參考下2014-11-11Golang中可比較的數(shù)據(jù)類(lèi)型詳解
在日常開(kāi)發(fā)中,比較操作是最常用的基本操作之一,可以用來(lái)判斷變量之間是否相等或者對(duì)應(yīng)的大小關(guān)系,本文將深入解析 Golang 中可比較的數(shù)據(jù)類(lèi)型,并結(jié)合代碼示例來(lái)說(shuō)明如何在不同情況下進(jìn)行比較,需要的朋友可以參考下2024-01-01golang 如何實(shí)現(xiàn)HTTP代理和反向代理
這篇文章主要介紹了golang 實(shí)現(xiàn)HTTP代理和反向代理的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05協(xié)同開(kāi)發(fā)巧用gitignore中間件避免網(wǎng)絡(luò)請(qǐng)求攜帶登錄信息
這篇文章主要為大家介紹了協(xié)同開(kāi)發(fā)巧用gitignore中間件避免網(wǎng)絡(luò)請(qǐng)求攜帶登錄信息2022-06-06如何解決goland,idea全局搜索快捷鍵失效問(wèn)題
這篇文章主要介紹了如何解決goland,idea全局搜索快捷鍵失效問(wèn)題,快捷鍵失效,可能是快捷鍵沖突,也或者是快捷鍵被修改成其他了。在settings下查看快捷鍵是否被修改,下文詳細(xì)介紹需要的朋友可以參考下2022-04-04解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問(wèn)題
這篇文章主要介紹了解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03