字串拼接應該在程式設計過程中比較常用的操作了,在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 裡面的字串都是不可變的,每次運算都會產生...