Golang 字串拼接

2021-09-24 06:37:35 字數 1945 閱讀 8102

字串拼接應該在程式設計過程中比較常用的操作了,在go語言中對字串的拼接有多種處理方式,以下通過例項來一一講解

這種應該是最直接最簡單的方式了。

func stringplus() string 

複製**

執行go test -bench=. -benchmem 檢視效能輸出如下:benchmarkstringplus-8 5000000 251 ns/op 640 b/op 3 allocs/op

func stringfmt() string  

複製**

benchmarkstringplus-8 10000000 234 ns/op 288 b/op 1 allocs/op

這個是利用strings.join函式進行拼接,接受乙個字串陣列,轉換為乙個拼接好的字串。

func stringjoin() string 

return strings.join(s, ",")

}複製**

benchmarkstringplus-8 10000000 189 ns/op 576 b/op 2 allocs/op

func stringbuffer() string 

複製**

benchmarkstringplus-8 3000000 505 ns/op 1136 b/op 4 allocs/op

func stringbuilder() string 

複製**

benchmarkstringbuffer10-8 10000000 200 ns/op 480 b/op 3 allocs/op

以上是進行了五次字串的拼接,可以看到buffer的效能較差一些,其他大致三種方式區別不大

package main

import (

"bytes"

"fmt"

"strings"

)func stringplus(p string) string

return s

}func stringfmt(p inte***ce{}) string

func stringjoin(p string) string

func stringbuffer(p string) string

return b.string()

}func stringbuilder(p string) string

return b.string()

}複製**

進行如下壓測

package main

import "testing"

const website = ""

const stringlen = 1000

func initstrings(n int) string

func initstringi(n int) inte***ce{},n)

for i:=0;ireturn s

}func benchmarkstringplus10(b *testing.b)

複製**

由於擴容導致的問題,那我們是否可以事先分配好所需的容量呢,檢視builder原始碼發現提供了乙個grow方法,正是來進行容量分配的。

func (b *builder) grow(n int) 

複製**

那我們你可以優化stringbuilder如下:

func stringbuilder(p string,cap int) string 

複製**

golang字串拼接方式

字串拼接是字元的常見操作。在golang中,遇見了字串拼接。作為乙個長期的c程式設計師,我第一反應是 字串拼接函式strcat,但發現golang並無字串拼接函式。我想起了最簡單的方法,通過 操作符進行字串拼接。但我查了相關資料後發現 golang中的string型別也是唯讀且不可變的 因此,這種拼...

golang中的字串拼接

由於golang中的字串是不可變的型別,因此用 連線會產生乙個新的字串對效率有影響。這種方式實現的字串拼接過程最簡單,在實際中這種拼接方式在應對少量拼接時,效率還是不錯的。s1 hello s2 world s3 s1 s2 fmt.print s3 s3 helloworld 使用sprintf函...

golang 幾種字串的拼接方式

最近在做效能優化,有個函式裡面的耗時特別長,看裡面的操作大多是一些字串拼接的操作,而字串拼接在 golang 裡面其實有很多種實現。1.直接使用運算子func benchmarkaddstringwithoperator b testing.b golang 裡面的字串都是不可變的,每次運算都會產生...