golang中2个只定义不需要初始化的高效字符缓存类型 bytes.Buffer和strings.Builder使用示例

在golang中,有2个高效的用于字符数据写入的缓存类型,同时他们也都实现了io.Writer接口,一个是bytes包中的Buffer 这个还实现了io.Reader接口; 另外一个是 strings包中的字符串构建类型 Builder。 在使用他们的时候是不需要初始化的,只需要定义一个对应类型的变量即可,如: var buf bytes.Buffer;  

bytes.Buffer使用示例

import (
	"bytes"
	"fmt"
)

func ExampleBytesBuffer() {

	// bytes包中的Buffer使用示例
	var buf bytes.Buffer // 仅定义就可以
	for i := 0; i < 3; i++ {
		// buf.WriteString(fmt.Sprintf("val%d ", i)) // 使用buf自带的方法吸入数据
		fmt.Fprintf(&buf, "val%d", i) // 把buf当做io.Writer来用
	}
	fmt.Println(buf.String()) // output: val0 val1 val2

}

strings.Builder使用示例

import (
	"fmt"
	"strings"
)


func ExampleStringBuilder() {
	// strings包中的Builder使用示例
	var sb strings.Builder
	// 循环写入数据
	for i := 0; i < 3; i++ {
		sb.WriteString(fmt.Sprintf("val%v ", i))
		// fmt.Fprintf(&sb, "val%v ", i)
	}
	fmt.Println(sb.String()) // output: val0 val1 val2
}

总结: bytes.Buffer, strings.Builder这2个类型是我们在处理字符串数据是使用最为频繁的2个类型,他们都只需要定义变量,不需要初始化就可以直接使用。 同时他们也都实现了io.Writer接口,我们可以把他们当做一个Writer来使用。 特别是strings.Builder对于在拼接大量的字符串的时候是非常高效的,使用它可以最大限度的介绍内存复制。。。。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值