golang拼接字符串的5種實現(xiàn)方式
拼接字符串的方式共5種
方式一:使用 “+”
字符串只能被訪問,不能被修改。
所以在拼接字符串時,需要內(nèi)存拷貝,會帶來性能的消耗。
但是可讀性強,適合少量字符串拼接
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()
適合字符串類型的切片拼接
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
可以拼接其他類型,但會涉及類型的轉(zhuǎn)換,底層實現(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,但會涉及字符串和[] byte之間的轉(zhuǎn)換,底層[] byte,性能一般,因為WtiteString方法使用的buffer太長,會導致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)換,在字符串大量拼接的場景下建議使用
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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang 實現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法
今天小編就為大家分享一篇golang 實現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08golang HTTP 服務器 處理 日志/Stream流的操作
這篇文章主要介紹了golang HTTP 服務器 處理 日志/Stream流的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12如何使用Go語言實現(xiàn)基于泛型的Jaccard相似度算法
這篇文章主要介紹了如何使用Go語言實現(xiàn)基于泛型的Jaccard相似度算法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-08-08使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間
這篇文章主要介紹了使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08Go語言使用ioutil.ReadAll函數(shù)需要注意基本說明
這篇文章主要為大家介紹了Go語言使用ioutil.ReadAll函數(shù)需要注意基本說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07