golang拼接字符串的5種實(shí)現(xiàn)方式
拼接字符串的方式共5種
方式一:使用 “+”
字符串只能被訪問(wèn),不能被修改。
所以在拼接字符串時(shí),需要內(nèi)存拷貝,會(huì)帶來(lái)性能的消耗。
但是可讀性強(qiáng),適合少量字符串拼接
package main import "fmt" func main() { var ( a string = "一" b string = "二" c string = "三" stringJoin string ) stringJoin = a + b + c fmt.Println("使用‘+'拼接字符串的結(jié)果為:", stringJoin) }
方式二:使用 strings.Join()
適合字符串類(lèi)型的切片拼接
package main import ( "fmt" "strings" ) func main() { str := []string{"a", "b", "c"} var strJoin string = strings.Join(str, ",") fmt.Println("使用strings.Join拼接字符串的結(jié)果為:", strJoin) }
方式三:使用fmt.Sprint
可以拼接其他類(lèi)型,但會(huì)涉及類(lèi)型的轉(zhuǎn)換,底層實(shí)現(xiàn)是[] byte字節(jié)切面
package main import "fmt" func main() { var ( name string = "張三" age int32 = 18 str string ) str = fmt.Sprintf("姓名:%s,年齡:%d", name, age) str1 := fmt.Sprint(name, age) str2 := fmt.Sprintln(name, age) fmt.Println(str) fmt.Println(str1) fmt.Println(str2) // 結(jié)果: // 姓名:張三,年齡:18 // 張三18 // 張三 18 // }
方式四:使用bytes.Buffer
支持字符串,字符,unicode,但會(huì)涉及字符串和[] byte之間的轉(zhuǎn)換,底層[] byte,性能一般,因?yàn)閃titeString方法使用的buffer太長(zhǎng),會(huì)導(dǎo)致panic,少量拼接可以使用
package main import ( "bytes" "fmt" ) func main() { var ( info bytes.Buffer str string ) info.WriteString("my") info.WriteString("name") info.WriteString("is") info.WriteString("Tom") str = info.String() fmt.Println("使用bytes.Buffer拼接結(jié)果為:", str) //結(jié)果: //使用bytes.Buffer拼接結(jié)果為: mynameisTom }
方式五:使用strings.Builder
支持字符串,字符,unicode,使用unsafe。
Pointer優(yōu)化了字符串和[] byte之間的轉(zhuǎn)換,在字符串大量拼接的場(chǎng)景下建議使用
var ( info strings.Builder str string ) info.WriteString("my") info.WriteString("name") info.WriteString("is") info.WriteString("Tom") str = info.String() fmt.Println("使用strings.Buffer拼接結(jié)果為:", str) //使用strings.Buffer拼接結(jié)果為: mynameisTom
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang 實(shí)現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法
今天小編就為大家分享一篇golang 實(shí)現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08淺談beego默認(rèn)處理靜態(tài)文件性能低下的問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談beego默認(rèn)處理靜態(tài)文件性能低下的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06go語(yǔ)言實(shí)現(xiàn)markdown解析庫(kù)的方法示例
這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)markdown解析庫(kù)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02golang HTTP 服務(wù)器 處理 日志/Stream流的操作
這篇文章主要介紹了golang HTTP 服務(wù)器 處理 日志/Stream流的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12如何使用Go語(yǔ)言實(shí)現(xiàn)基于泛型的Jaccard相似度算法
這篇文章主要介紹了如何使用Go語(yǔ)言實(shí)現(xiàn)基于泛型的Jaccard相似度算法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-08-08使用golang獲取linux上文件的訪問(wèn)/創(chuàng)建/修改時(shí)間
這篇文章主要介紹了使用golang獲取linux上文件的訪問(wèn)/創(chuàng)建/修改時(shí)間,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08Go語(yǔ)言使用ioutil.ReadAll函數(shù)需要注意基本說(shuō)明
這篇文章主要為大家介紹了Go語(yǔ)言使用ioutil.ReadAll函數(shù)需要注意基本說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07