四种拼接方案:

1,直接用 += 操作符, 直接将多个字符串拼接. 最直观的方法, 不过当数据量非常大时用这种拼接访求是非常低效的。

2,直接用 + 操作符,这个和+=其实一个意思了。

3,用字符串切片([]string)装载所有要拼接的字符串,最后使用strings.Join() 函数一次性将所有字符串拼接起来。在数据量非常大时,这种方法的效率也还可以的。

4,利用Buffer( Buffer是一个实现了读写方法的可变大小的字节缓冲 ),将所有的字符串都写入到一个Buffer缓冲区中,最后再统一输出,这种方法最快。

代码示例

package main

import (

"bytes"

"fmt"

"strings"

"time"

)

func main() {

//第一种连接方法(最快)

var buffer bytes.Buffer

s := time.Now()

for i := 0; i < 100000; i++ {

buffer.WriteString("test is here\n")

}

buffer.String() // 拼接结果

e := time.Now()

fmt.Println("1 time is ", e.Sub(s).Seconds())

      //第二种方法
s = time.Now()
var sl []string
for i := 0; i < 100000; i++ {
sl = append(sl, "test is here\n")
}
strings.Join(sl, "")
e = time.Now()
fmt.Println("2 time is", e.Sub(s).Seconds()) //第三种方法
s = time.Now()
str := ""
for i := 0; i < 100000; i++ {
str += "test is here\n"
}
e = time.Now()
fmt.Println("3 time is ", e.Sub(s).Seconds()) //第四种方法
s = time.Now()
str4 := ""
for i := 0; i < 100000; i++ {
str4 = str4 + "test is here"
}
e = time.Now()
fmt.Println("4 time is ", e.Sub(s).Seconds())

}

golang字符串拼接的更多相关文章

  1. [Golang]字符串拼接方式的性能分析

    本文100%由本人(Haoxiang Ma)原创,如需转载请注明出处. 本文写于2019/02/16,基于Go 1.11.至于其他版本的Go SDK,如有出入请自行查阅其他资料. Overview 写 ...

  2. golang字符串拼接性能对比

    对比 +(运算符).strings.Join.sprintf.bytes.Buffer对字符串拼接的性能 package main import ( "bytes" "f ...

  3. golang的字符串拼接

    常用拼接方法 字符串拼接在日常开发中是很常见的需求,目前有两种普遍做法: 一种是直接用 += 来拼接 s1 := "Hello" s2 := "World" s ...

  4. golang中的字符串拼接

    go语言中支持的字符串拼接的方法有很多种,这里就来罗列一下 常用的字符串拼接方法 1.最常用的方法肯定是 + 连接两个字符串.这与python类似,不过由于golang中的字符串是不可变的类型,因此用 ...

  5. Golang拼接字符串的5种方法及其效率_Chrispink-CSDN博客_golang 字符串拼接效率 https://blog.csdn.net/m0_37422289/article/details/103362740

    Different ways to concatenate two strings in Golang - GeeksforGeeks https://www.geeksforgeeks.org/di ...

  6. GO语言的进阶之路-Golang字符串处理以及文件操作

    GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...

  7. golang 字符串与整数, 布尔转换 strconv

    strconv 是golang对于字符串和基本数据类型之间的转换字符串转整数testStr := "1000" testInt, err := strconv.Atoi(testS ...

  8. SQL中字符串拼接

    1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select '123'+'456' ...

  9. StringBuilder(字符串拼接类)

    StringBuilder是在using System.Text命名空间下的一个成员. 在做字符串拼接的时候,因为字符串是引用类型,新的字符串是会再内存中创建的,所以用+号拼接字符串是比较耗效率的. ...

随机推荐

  1. 关闭VS2015的WPF UI调试工具

    VS菜单: 工具 > 选项 > 调试 > 常规 > 启用Xaml 的UI调试工具.把勾勾去掉.

  2. DTL

    DTL:Django模板语言(Django Template Language). 一.变量 1.视图函数可以通过两种方式将变量传递给模板页面: ① render(request, 'test_pag ...

  3. VMware5.5-VMware补丁程序VUM

    VUM 官方文档 https://docs.vmware.com/cn/VMware-vSphere/5.5/com.vmware.vsphere.update_manager.doc/GUID-F7 ...

  4. 2018-6-20-随笔-SQL Server中乱码

    SQL Server中乱码解决方案: 在Sql Server2005英文版中,如果未对Varchar类型的字段进行设置,那么很多朋友会发现向数据库中插入记录时,如果对应的varchar类型字段 的值为 ...

  5. 虚幻开放日2017ppt

    虚幻开放日2017ppthttp://pan.baidu.com/s/1c1SbcKK 如果挂了QQ+378100977 call我

  6. HDU.4700.Flow(构造 最小割树)

    题目链接 \(Description\) 给定\(n\)以及\(n\)个点任意两点之间的最大流,求一张无向图满足给定条件. \(n\leq100\). \(Solution\) 有些类似最小割树. 我 ...

  7. BZOJ.5289.[AHOI/HNOI2018]排列(贪心 heap)

    BZOJ LOJ 洛谷 \(Kelin\)写的挺清楚的... 要求如果\(a_{p_j}=p_k\),\(k\lt j\),可以理解为\(k\)要在\(j\)之前选. 那么对于给定的\(a_j=k\) ...

  8. RabbitMQ主题模式

    Send类 package topics; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; imp ...

  9. PA2015

    题目链接 我按AC排序后做的 4291 傻逼题不多说 4292 f(n)最大也很小,暴力枚举就好了 4293 这是个线段树的题,说到这应该会了 4294 Claris:斐波那契数列模\(10^m\)的 ...

  10. php5.4以下,json_encode不转义实现方法

    function json_encode($input){ // 从 PHP 5.4.0 起, 增加了这个选项. if(defined('JSON_UNESCAPED_UNICODE')){ retu ...