欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Go语言字符串高效拼接的实现

程序员文章站 2022-03-18 11:57:59
+号拼接 这种拼接最简单,也最容易被我们使用,因为它是不限编程语言的,比如go语言有,java也有,它们是+号运算符,在运行时计算的。 var s stri...

+号拼接

这种拼接最简单,也最容易被我们使用,因为它是不限编程语言的,比如go语言有,java也有,它们是+号运算符,在运行时计算的。

var s string
s+="昵称"+":"+"志强1224"+"\n"
s+="联系方式qq"+":"+"354662600"+"\n"
fmt.println(s)

fmt 拼接

这种拼接,借助于fmt.sprint系列函数进行拼接,然后返回拼接的字符串。

fmt.sprint("昵称",":","志强1224","\n","联系方式qq",":","354662600")

join 拼接

这个是利用strings.join函数进行拼接,接受一个字符串数组,转换为一个拼接好的字符串。

s:=[]string{"昵称",":","志强1224","\n","联系方式qq",":","354662600"}
fmt.println(strings.join(s,""))

buffer 拼接

使用的是bytes.buffer进行的字符串拼接,它是非常灵活的一个结构体,不止可以拼接字符串,还是可以byte,rune等,并且实现了io.writer接口,写入也非常方便。

var b bytes.buffer
b.writestring("昵称")
b.writestring(":")
b.writestring("志强1224")
b.writestring("\n")
b.writestring("联系方式qq")
b.writestring(":")
b.writestring("354662600")
b.writestring("\n")
fmt.println(b.string())

builder 拼接

为了改进buffer拼接的性能,从go 1.10 版本开始,增加了一个builder类型,用于提升字符串拼接的性能。它的使用和buffer几乎一样。

var b strings.builder
b.writestring("昵称")
b.writestring(":")
b.writestring("志强1224")
b.writestring("\n")
b.writestring("联系方式qq")
b.writestring(":")
b.writestring("354662600")
b.writestring("\n")
fmt.println(b.string())

拼接函数改造

func stringplus(p []string) string{
  var s string
  l:=len(p)
  for i:=0;i<l;i++{
   s+=p[i]
  }
  return s
}

func stringfmt(p []interface{}) string{
  return fmt.sprint(p...)
}

func stringjoin(p []string) string{
  return strings.join(p,"")
}

func stringbuffer(p []string) string {
  var b bytes.buffer
  l:=len(p)
  for i:=0;i<l;i++{
   b.writestring(p[i])
  }
  return b.string()
}

func stringbuilder(p []string) string {
  var b strings.builder
  l:=len(p)
  for i:=0;i<l;i++{
   b.writestring(p[i])
  }
  return b.string()
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。