Skip to content

关于字符串的拼接:Go 字符串拼接6种,最快的方式 -- strings.builder - 技术颜良 - 博客园

使用 strings.builder 性能最好:

Go语言提供了一个专门操作字符串的库strings,使用strings.Builder可以进行字符串拼接,提供了writeString方法拼接字符串,使用方式如下:

go
var builder strings.Builder
builder.WriteString("asong")
builder.String()

strings.builder的实现原理很简单,结构如下:

go
type Builder struct {
    addr *Builder // of receiver, to detect copies by value
    buf  []byte // 1
}

addr字段主要是做copycheckbuf字段是一个byte类型的切片,这个就是用来存放字符串内容的,提供的writeString()方法就是像切片buf中追加数据:

go
func (*BuilderWriteString(s string) (interror) {
 b.copyCheck()
 b.buf = append(b.buf, s...)
 return len(s), nil
}

提供的String方法就是将[]]byte转换为string类型,这里为了避免内存拷贝的问题,使用了强制转换来避免内存拷贝:

go
func (*BuilderString() string {
 return *(*string)(unsafe.Pointer(&b.buf))
}

菜就多练

本站访客数 人次 本站总访问量