真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用golang實(shí)現(xiàn)拼接字符串的幾種方法

本篇文章給大家分享的是有關(guān)使用golang 實(shí)現(xiàn)拼接字符串的幾種方法,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為南山等服務(wù)建站,南山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為南山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

實(shí)現(xiàn)方法

1.直接使用運(yùn)算符

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

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

2.fmt.Sprintf()

func BenchmarkAddStringWithSprintf(b *testing.B) {
    hello := "hello"
    world := "world"
    for i := 0; i < b.N; i++ {        _ = fmt.Sprintf("%s,%s", hello, world)
    }
}1234567

內(nèi)部使用 []byte 實(shí)現(xiàn),不像直接運(yùn)算符這種會(huì)產(chǎn)生很多臨時(shí)的字符串,但是內(nèi)部的邏輯比較復(fù)雜,有很多額外的判斷,還用到了 interface,所以性能也不是很好

3.strings.Join()

func BenchmarkAddStringWithJoin(b *testing.B) {
    hello := "hello"
    world := "world"
    for i := 0; i < b.N; i++ {
        _ = strings.Join([]string{hello, world}, ",")
    }
}1234567

join會(huì)先根據(jù)字符串?dāng)?shù)組的內(nèi)容,計(jì)算出一個(gè)拼接之后的長度,然后申請對應(yīng)大小的內(nèi)存,一個(gè)一個(gè)字符串填入,在已有一個(gè)數(shù)組的情況下,這種效率會(huì)很高,但是本來沒有,去構(gòu)造這個(gè)數(shù)據(jù)的代價(jià)也不小

4.buffer.WriteString()

func BenchmarkAddStringWithBuffer(b *testing.B) {
    hello := "hello"
    world := "world"
    for i := 0; i < 1000; i++ {
        var buffer bytes.Buffer
        buffer.WriteString(hello)
        buffer.WriteString(",")
        buffer.WriteString(world)
        _ = buffer.String()
    }
}1234567891011

這個(gè)比較理想,可以當(dāng)成可變字符使用,對內(nèi)存的增長也有優(yōu)化,如果能預(yù)估字符串的長度,還可以用 buffer.Grow() 接口來設(shè)置 capacity

以上就是使用golang 實(shí)現(xiàn)拼接字符串的幾種方法,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁名稱:使用golang實(shí)現(xiàn)拼接字符串的幾種方法
分享URL:http://weahome.cn/article/posicj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部