亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

go語言中五種字符串的拼接方式(小結(jié))

 更新時間:2021年12月09日 15:17:49   作者:kuteng  
字符串拼接在 golang 里面其實有很多種實現(xiàn),本文就詳細(xì)的介紹一下go語言中五種字符串的拼接方式以及性能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

+拼接方式

這種方式是我在寫golang經(jīng)常用的方式,go語言用+拼接,php使用.拼接,不過由于golang中的字符串是不可變的類型,因此用 + 連接會產(chǎn)生一個新的字符串對效率有影響。

func main() {
    s1 := "hello"
    s2 := "word"
    s3 := s1 + s2
    fmt.Print(s3) //s3 = "helloword"
}

sprintf函數(shù)

s1 := "hello"
s2 := "word"
s3 := fmt.Sprintf("%s%s", s1, s2) //s3 = "helloword"

這種方式也是開發(fā)過程中經(jīng)常使用到的,這樣寫的好處就是不會直接產(chǎn)生臨時字符串,但是效率好像也是不是特別高。

Join函數(shù)

使用Join函數(shù)我們需要先引入strings包才能調(diào)用Join函數(shù)。Join函數(shù)會先根據(jù)字符串?dāng)?shù)組的內(nèi)容,計算出一個拼接之后的長度,然后申請對應(yīng)大小的內(nèi)存,一個一個字符串填入,在已有一個數(shù)組的情況下,這種效率會很高,如果沒有的話效率也不高。我一般用來切片轉(zhuǎn)字符串使用。

s1 := "hello"
s2 := "word"
var str []string = []string{s1, s2}
s3 := strings.Join(str, "")
fmt.Print(s3)

buffer.Builderbuffer.WriteString函數(shù)

s1 := "hello"
s2 := "word"
var bt bytes.Buffer
bt.WriteString(s1)
bt.WriteString(s2)
s3 := bt.String()
fmt.Println(s3)

效率比上面的高不少但是我在開發(fā)中基本上沒有用過。

buffer.Builder函數(shù)

s1 := "hello"
s2 := "word"
var build strings.Builder
build.WriteString(s1)
build.WriteString(s2)
s3 := build.String()
fmt.Println(s3)

官方建議使用的的拼接方式,和上面的使用方法差不多,官方建議是官方的我是小白只喜歡第一種,所以一般情況下我都是用+拼接,如果拼接的字符串比較長的話就是最后一種方式了,畢竟保命要緊。

ps:直接使用運算符

func BenchmarkAddStringWithOperator(b *testing.B) {
    hello := "hello"
    world := "world"
    for i := 0; i < b.N; i++ {
        _ = hello + "," + world
    }
}

golang 里面的字符串都是不可變的,每次運算都會產(chǎn)生一個新的字符串,所以會產(chǎn)生很多臨時的無用的字符串,不僅沒有用,還會給 gc 帶來額外的負(fù)擔(dān),所以性能比較差

主要結(jié)論

  • 在已有字符串?dāng)?shù)組的場合,使用 strings.Join() 能有比較好的性能
  • 在一些性能要求較高的場合,盡量使用 buffer.WriteString() 以獲得更好的性能
  • 性能要求不太高的場合,直接使用運算符,代碼更簡短清晰,能獲得比較好的可讀性
  • 如果需要拼接的不僅僅是字符串,還有數(shù)字之類的其他需求的話,可以考慮 fmt.Sprintf()

到此這篇關(guān)于go語言中五種字符串的拼接方式(小結(jié))的文章就介紹到這了,更多相關(guān)go語言字符串拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • GO語言判斷一個網(wǎng)段是否屬于另一個網(wǎng)段的子網(wǎng)

    GO語言判斷一個網(wǎng)段是否屬于另一個網(wǎng)段的子網(wǎng)

    這篇文章主要介紹了GO語言判斷一個網(wǎng)段是否屬于另一個網(wǎng)段的子網(wǎng)的相關(guān)資料,內(nèi)容介紹詳細(xì),具有一定的參考價值,需要的朋友可任意參考一下
    2022-03-03
  • golang連接sqlx庫的操作使用指南

    golang連接sqlx庫的操作使用指南

    這篇文章主要為大家介紹了golang連接sqlx庫的操作使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Golang中切片長度和容量的區(qū)別示例詳解

    Golang中切片長度和容量的區(qū)別示例詳解

    切片長度與容量在Go中很常見,切片長度是切片中可用元素的數(shù)量,而切片容量是從切片中第一個元素開始計算的底層數(shù)組中的元素數(shù)量,這篇文章主要給大家介紹了關(guān)于Golang中切片長度和容量區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Golang實現(xiàn)程序優(yōu)雅退出的方法詳解

    Golang實現(xiàn)程序優(yōu)雅退出的方法詳解

    項目開發(fā)過程中,隨著需求的迭代,代碼的發(fā)布會頻繁進(jìn)行,在發(fā)布過程中,Golang如何讓程序做到優(yōu)雅的退出?本文就來詳細(xì)為大家講講
    2022-06-06
  • Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實戰(zhàn)指南

    Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實戰(zhàn)指南

    Go語言數(shù)據(jù)庫單元測試入門:聚焦高效、可靠的數(shù)據(jù)庫代碼驗證!想要確保您的Go應(yīng)用數(shù)據(jù)層堅如磐石嗎?本指南將手把手教您如何利用Go進(jìn)行數(shù)據(jù)庫單元測試,輕松揪出隱藏的bug,打造無懈可擊的數(shù)據(jù)處理邏輯,一起來探索吧!
    2024-01-01
  • golang基于errgroup實現(xiàn)并發(fā)調(diào)用的方法

    golang基于errgroup實現(xiàn)并發(fā)調(diào)用的方法

    這篇文章主要介紹了golang基于errgroup實現(xiàn)并發(fā)調(diào)用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • GoFrame 框架緩存查詢結(jié)果的示例詳解

    GoFrame 框架緩存查詢結(jié)果的示例詳解

    GoFrame的gdb對查詢結(jié)果的緩存處理是不是非常的優(yōu)雅。尤其是*gcache.Cache對象采用了適配器設(shè)計模式,可以輕松實現(xiàn)從單進(jìn)程內(nèi)存緩存切換為分布式的Redis緩存,本文重點給大家介紹GoFrame 如何優(yōu)雅的緩存查詢結(jié)果,感興趣的朋友一起看看吧
    2022-06-06
  • Go中strings的常用方法詳解

    Go中strings的常用方法詳解

    這篇文章主要介紹了Go中strings的常用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Go語言學(xué)習(xí)之循環(huán)語句使用詳解

    Go語言學(xué)習(xí)之循環(huán)語句使用詳解

    這篇文章主要為大家介紹了Go語言中的常用循環(huán)語句的使用,例如:for循環(huán)、for-each、break等,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-04-04
  • golang中使用mongo的方法介紹

    golang中使用mongo的方法介紹

    這篇文章主要給大家介紹了關(guān)于golang中使用mongo的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08

最新評論