<p>四种拼接方案:</p>
<p>1,直接用 += 操作符, 直接将多个字符串拼接. 最直观的方法, 不过当数据量非常大时用这种拼接访求是非常低效的。</p>
<p>2,直接用 + 操作符,这个和+=其实一个意思了。</p>
<p>3,用字符串切片([]string)装载所有要拼接的字符串,最后使用strings.Join() 函数一次性将所有字符串拼接起来。在数据量非常大时,这种方法的效率也还可以的。</p>
<p>4,利用Buffer( Buffer是一个实现了读写方法的可变大小的字节缓冲 ),将所有的字符串都写入到一个Buffer缓冲区中,最后再统一输出,这种方法最快。</p>
<p> </p>
<p>代码示例</p>
<pre>
<code class="language-go">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())
}</code></pre>
<p> </p>
<p> </p>
<p>运行结果如下</p>
<p> </p>
<p>1 time is 0.00402775</p>
<p>2 time is 0.019025534</p>
<p>3 time is 7.162544528</p>
<p>4 time is 6.538371249</p>
<p> </p>
<p> </p>
<p><br />
// bytes.Buffer的方法, 将给定字符串追加(append)到Buffer</p>
<p>func (b *Buffer) WriteString(sstring) (nint, err error)</p>
<p> </p>
<p>// 字符串拼接, 把slice通过给定的sep连接成一个字符串</p>
<p>func Join(a []string, sepstring) string</p>
有疑问加站长微信联系(非本文作者)