Golang中高效拼接字符串

Go中可以使用“+”合并字符串,但是这种合并方式效率非常低,每合并一次,都是创建一个新的字符串,就必须遍历复制一次字符串。Java中提供StringBuilder类来解决这个问题。Go中也有类似的机制,那就是Buffer。

以下是示例代码:

package main



import (

    "bytes"

    "fmt"

)



func main() {

    var buffer bytes.Buffer

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

        buffer.WriteString("a")

    }

    fmt.Println(buffer.String())

}

使用bytes.Buffer来组装字符串,不需要遍历,只需要将添加的字符串放在缓存末尾即可

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java NIO 缓冲区学习笔记

Buffer其实就是是一个容器对象,它包含一些要写入或者刚读出的数据。在NIO中加入Buffer对象,体现了新库与原I/O的一个重要区别。在面向流的I/O中,您...

11920
来自专栏nimomeng的自我进阶

《Objective C编程》笔记

1.为什么main()总是返回0?可以将main()的返回结果视为“粗欧文报告”,这样0就是好消息,没有错误就是成功。 2.消息:消息发送(指令)必须写在一对...

11830
来自专栏漫漫前端路

当 Vue 处理数组与处理纯对象的方式一样

当给数组设置 length 时,如果大于数组本身长度,新元素则会以 empty 填充,如下所示:

19520
来自专栏老马说编程

(60) 随机读写文件及其应用 - 实现一个简单的KV数据库 / 计算机程序的思维逻辑

查看历史文章,请点击上方链接关注公众号。 57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读...

25660
来自专栏salesforce零基础学习

salesforce lightning零基础学习(十) Aura Js 浅谈三: $A、Action、Util篇

前两篇分别介绍了Component类以及Event类,此篇将会说一下 $A , Action以及 Util。

16620
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:程序结构 推荐

19240
来自专栏全栈之路

golang教程

这里有两个关键点。 - 其一是defer关键字。defer语句的含义是不管程序是否出现异常,均 在函数退出时自动执行相关代码。 - 其二是Go语言的函数允许返回...

71020
来自专栏Golang语言社区

Go Template学习笔记

快速开始 func handler(w http.ResponseWriter,r *http.Request){ t := templ...

34070
来自专栏PhpZendo

带你玩转 JavaScript ES6 (七) – 异步

本章我们将学习 ES6 中的 Promise(异步) 相关知识,了解如何使用 Promise 对象创建异步程序

7710
来自专栏微信公众号:Java团长

Java基础知识详细总结

ClassLoader使用的是双亲委托模型来搜索类的,每个ClassLoader实例都有一个父类加载器的引用(不是继承的关系,是一个包含的关系),虚拟机内置的类...

15930

扫码关注云+社区

领取腾讯云代金券