golang中的字符串拼接

go语言中支持的字符串拼接的方法有很多种,这里就来罗列一下

常用的字符串拼接方法

1.最常用的方法肯定是 + 连接两个字符串。这与python类似,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。

s1 := "字符串"
s2 := "拼接"
s3 := s1 + s2
fmt.Print(s3) //s3 = "打印字符串"

2.第二种方法使用sprintf函数,虽然不会像直接使用 + 那样产生临时字符串。但是效率也不高

s1 := "字符串"
s2 := "拼接"
s3 := fmt.Sprintf("%s%s", s1, s2) //s3 = "打印字符串"

3.第三种方法是用Join函数,这里我们需要先引入strings包才能调用Join函数。Join函数会先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,如果没有的话效率也不高。

//需要先导入strings包
s1 := "字符串"
s2 := "拼接"
//定义一个字符串数组包含上述的字符串
var str []string = []string{s1, s2}
//调用Join函数
s3 := strings.Join(str, "")
fmt.Print(s3)

4.第四个方法是调用buffer.WriteString函数,这种方法的性能就要大大优于上面的了。

//需要先导入bytes包
s1 := "字符串"
s2 := "拼接"
//定义Buffer类型
var bt bytes.Buffer
向bt中写入字符串
bt.WriteString(s1)
bt.WriteString(s2)
//获得拼接后的字符串
s3 := bt.String()

5.第5个方法是用buffer.Builder,这个方法和上面的差不多,不过官方建议用这个,使用方法和上面基本一样

//需要先导入Strings包
s1 := "字符串"
s2 := "拼接"
var build strings.Builder
build.WriteString(s1)
build.WriteString(s2)
s3 := build.String()

结论

一般对于少量的字符串拼接可以直接用+来连接,不过最好的方法还是Builder。

原文地址:https://www.cnblogs.com/mambakb/p/10352138.html

时间: 2024-10-08 20:03:52

golang中的字符串拼接的相关文章

golang 中获取字符串个数

golang 中获取字符串个数 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数 // string is the set of all strings of 8-bit bytes, conventionally but not // necessarily representing UTF-8-encoded text. A string may be empty, but //

MapReduce中使用字符串拼接导致的问题

今天在帮业务方优化mapreduce作业时遇到一个用字符串拼接的问题. reduce中字符串拼接代码: while (it.hasNext()) { line = it.next().toString(); artID+=line+","; ct++; } 采用的是String直接拼接,结果是该作业作业只剩一个reduce一直在运行,而且时间长达6小时,其他已经完成的reduce只用了10多分钟. 咨询了一下业务方,artID有的会很长,这个时候会一直进行字符串拼接. 我又看了一下未完

python中实现字符串使用非"+"号拼接的方式实现

在脉脉上看到一片在程序中对字符串拼接的实现,不用+号如何完成字符串拼接,大概看了下评论,大部分都是说在java中实现不使用+号,完成字符串的拼接操作,在此之前我也是安装以往经验for循环遍历列表使用+号完成字符串拼接操作,今天尝试使用非+号完成字符串的拼接操作,一下拼接一个条件sql的拼接实现 例句sql是链接到hive库进行的查询操作代码如下 imsis = ('460020291****15', '46002029****6391') # 构造新数列 # i = "(" # for

[Java Performance] 字符串拼接注意事项

字符串拼接(String Concatenation) // 编译器优化前 String answer = integerPart + "." + mantissa; // 编译器优化后 String answer = new StringBuilder(integerPart).append(".").append(mantissa).toString(); 因为编译器会对字符串的拼接操作进行优化,所以在同一条语句中使用字符串拼接操作对性能并没有负面影响.正因为编

lua基础【二】lua中关于字符串的操作总结

--从从控制台输入字符串操作 str =io.read() if str=="hello" then print(str) end --lua中的字符串拼接操作 str="hello" str2="world" str3=str..str2 print(str3) --lua中的number与string类型的转换 a=10 b=tostring(a) if b == "10" then print(b) end c=tonu

3、python中的字符串

一.前言 字符串是python中重要的数据类型.字符串就是一段文本,在python中用引号来标示. 二.字符串分类 字符串根据使用场景不同,一共分成3类: (1)单引号.双引号创建的单行字符串: 在单引号和双引号的单行字符串中不能通过回车键换行,在python shell ide中会直接执行命令,在某些编辑器中会帮你转成两行的单行字符串.如果想要在单行字符串中换行,只能通过在字符串输入\n,不过不建议这么做. 示例1: 示例2: 这里在光标所在位置换行,直接帮你另开一个换行字符串提示你输入,在换

mysql 字符串拼接+设置null值

#字符串拼接 concat(s1,s2); 将表中last_name和first_name中的字符串拼接 select concat(last_name,first_name) as 姓名 from employees; #只会修改last_name不会修改first_name SELECT first_name,last_name AS f FROM employees; #将两个列用逗号隔开并命名为out_put SELECT CONCAT(`last_name`,',',`phone_nu

python中字符串拼接

python中字符串拼接的三种方式: 1.使用 '+': 这中方式会在内存中,没使用一次就开辟一个新的空间,不建议使用.当数据庞大时候效率很低.后期有垃圾回收机制来处理没有用的字符串 案例:name = 'jam' name1 = name + 'c'这样内存中会开辟一个空间存放 name2 = name1 + 'h''这样内存中会再开辟一个空间存放 2.字符串格式化的形式:%s,这中方式让内存最多就开辟两个空间来进行存放字符. 案例:name = 'jam' name2 = 'chen' se

LotusScript提升大字符串拼接函数(功能类似java中StringBuffer)

LotusScript提升大字符串拼接函数(功能类似java中StringBuffer),代码如下: Class StringBuffer Public count As Integer Private arr() As String Private size As Integer Private increment As Integer Sub New(Byval a As Integer) Redim arr(a) increment=a count=0 End Sub Sub add(By