四种拼接方案:

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())

  1. //第二种方法
  2. s = time.Now()
  3. var sl []string
  4. for i := 0; i < 100000; i++ {
  5. sl = append(sl, "test is here\n")
  6. }
  7. strings.Join(sl, "")
  8. e = time.Now()
  9. fmt.Println("2 time is", e.Sub(s).Seconds())
  10. //第三种方法
  11. s = time.Now()
  12. str := ""
  13. for i := 0; i < 100000; i++ {
  14. str += "test is here\n"
  15. }
  16. e = time.Now()
  17. fmt.Println("3 time is ", e.Sub(s).Seconds())
  18. //第四种方法
  19. s = time.Now()
  20. str4 := ""
  21. for i := 0; i < 100000; i++ {
  22. str4 = str4 + "test is here"
  23. }
  24. e = time.Now()
  25. 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. CC2431 代码分析②-CC2431狂轰滥炸

    CC2431 code review : CC2431 狂轰滥炸 在上一篇中的最后我们分析到CC2431 开始喊出第一声,这里我们逐步分析从第一声到后面的狂轰滥炸! 上代码 /************ ...

  2. 基于Systick系统时钟延时的LED闪烁灯

    1.回顾我们的51 单片机编程,当我们需要做系统延迟的时候,最常采用的一种方式就是使用for 循环的空语句等待来实现. 当然,在STM32 里面也可以这么实现.但是在STM32 的Cortex 内核里 ...

  3. Redis设计与实现:读书笔记之二

    1.数据库 Redis服务器一般包含多个db,默认16个. 切换数据库 每个redis客户端都有自己的目标数据库,默认为0,可以通过select 1,切换数据库. 设置键的生存周期和过期时间 PTTL ...

  4. 查看过多占用cpu的是哪部分代码?

    https://www.linuxidc.com/Linux/2016-04/130528.htm (1)top命令可查看是哪个项目占用的cpu内存较大,找到该项目对应的PID (2)top -H - ...

  5. Java 多线程 临界区

    临界区表示一种公共资源或共享数据,可以被多个线程使用.但是每一次只能有一个线程使用它.一旦临界区资源被占用,想使用该资源的其他线程必须等待. 例如,办公室里的打印机一次只能执行一个任务.当小王和小明同 ...

  6. PAT基础6-7

    6-7 统计某类完全平方数 (20 分) 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumbe ...

  7. HDU 2002 计算球体积

    题目链接:HDU 2002 Description 根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每 ...

  8. 关于实现udev/mdev自动挂载与卸载

    在网上有很多关于讲mdev的自动挂载基本上都是一个版本,经过测试自动挂载确实可行,但是关于自动卸载mdev似乎不能很好的支持,经过修改已经可以做到与udev的效果相似.不能在挂载的目录中进行热插拔,否 ...

  9. IDEA 下载 和 安装

    1. IDEA 下载 网址     pttps://www.jetbrains.com IDEA      优点  :高度集成企业软件工程的概念(svn, git) 缺点: 破解存在在法律风险 ; E ...

  10. Windows7下安装与破解IntelliJ IDEA2017

    IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具( ...