本文主要是介绍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对于在拼接大量的字符串的时候是非常高效的,使用它可以最大限度的介绍内存复制。。。。
这篇关于golang中2个只定义不需要初始化的高效字符缓存类型 bytes.Buffer和strings.Builder使用示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!