bytes.Buffer是一个缓冲byte类型的缓冲器存放着都是byte。
Buffer 是 bytes 包中的一个type Buffer struct{…}
。
A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use.
Buffer是一个变长的缓冲器,具有 Read 和Write方法。Buffer的零值是一个空的 buffer,但是可以使用)
四种创建方式:
var b bytes.Buffer //直接定义一个 Buffer 变量,而不用初始化
b1 := new(bytes.Buffer) //直接使用 new 初始化,可以直接使用
// 其它两种定义方式
func NewBuffer(buf []byte) *Buffer
func NewBufferString(s string) *Buffer
代码实现:
package main
import (
"bytes"
"fmt"
)
func main() {
//第一种定义方式
var b bytes.Buffer //直接定义一个 Buffer 变量,而不用初始化
b.Write([]byte("Hello ")) // 可以直接使用
fmt.Println(b.String())
//第二种定义方式
c := new(bytes.Buffer)
c.WriteString("World")
fmt.Println(c)
//第三种定义方式
d := bytes.NewBuffer(nil)
d.WriteString("这是第三种定义方式")
fmt.Println(d.String())
//第四张定义方式
f := bytes.NewBufferString("这是第四种定义方式")
fmt.Println(f.String())
}
输出:
Hello
World
这是第三种定义方式
这是第四种定义方式
1.Write,把字节切片p写入到buffer中去。
func main() {
newBytes := []byte(" go")
//创建一个内容Learning的缓冲器
buf := bytes.NewBuffer([]byte("Learning"))
//将newBytes这个slice写到buf的尾部
buf.Write(newBytes)
fmt.Println(buf.String())
}
2.WriteString,使用WriteString方法,将一个字符串放到缓冲器的尾部。
func main() {
newString := " go"
//创建一个string内容Learning的缓冲器
buf := bytes.NewBufferString("Learning")
//将newString这个string写到buf的尾部
buf.WriteString(newString)
fmt.Println(buf.String())
}
1.Read,给Read方法一个容器p,读完后,p就满了,缓冲器相应的减少了,返回的n为成功读的数量。
func (b *Buffer) Read(p []byte) (n int, err error) {}
func main() {
bufs := bytes.NewBufferString("Learning swift.")
fmt.Println("缓冲器:"+bufs.String())
l := make([]byte, 5)
//把bufs的内容读入到l内,因为l容量为5,所以只读了5个过来
bufs.Read(l)
fmt.Println("读取到的内容:"+string(l))
fmt.Println("缓冲器:"+bufs.String())
}
输出:
缓冲器:Learning swift.
读取到的内容:Learn
缓冲器:ing swift.
2.ReadFrom,从一个实现io.Reader接口的r,把r里的内容读到缓冲器里,n返回读的数量。
func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error) {}
func main() {
file, _ := os.Open("d:/a.txt")
buf := bytes.NewBufferString("Learning swift.")
buf.ReadFrom(file) //将text.txt内容追加到缓冲器的尾部
fmt.Println(buf.String())
}
输出:
Learning swift.this is text
3.Reset,将数据清空,没有数据可读
func main() {
bufs := bytes.NewBufferString("现在开始 Learning go.")
bufs.Reset()
fmt.Println(bufs.String())
}
声明:Nansheng.Su 发表于 2019-04-28 11:03:00 ,共计399字。
转载请署名:GO语言之bytes.buffer | www.sunansheng.com
对象池对象池顾名思义就是存储对象的容器。主要仅适用于需要大量对象并且使用后就销毁场景,例如射击游戏中子弹,塔防中怪物,大量生成之后就很快销毁。频繁的产生销毁对象,会消耗大量cpu资源,造成游戏卡顿,并且对象存储在堆内存中,是不连续的空间,会造成内存碎片问题,随着运行时间的增加,程序存在闪退的现象。对象池的整体思想对于要大量产生的对象使用一个集合存储起来,并使用一个类来维护这个集...
Unity光晕剑效果的Shader简单实现【Unity Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态[Unity3D][NGUI]选中某个图标后高亮高亮效果,使用Shader可以轻松实现【Unity ImageEffect】一个用于角色外边缘发光的效果Shader 边缘发光、变灰、高亮着色器[Unity3D]Unity3D
Python和Go语言的区别总结什么是Python?Python是一种功能强大的高级编程语言,主要用于科学和工程计算。它是一种高效的语言,优雅务实,简单而强大,适合新手和专业人士的编程。Python支持多种编程范例,并提出了一个大型标准库,包括面向对象,命令式,功能性和程序性。Go是什么?Go是一种通用编程语言,由Google设计;它借鉴了许多其他许多好主意语言,同时避免导致复杂性和不可靠代码的功...
使用requests模块爬取网页数据文章目录使用requests模块爬取网页数据@[toc]1. 爬取静态页面数据1.1 准备工作1.2 各模块代码1.3 完整代码2. 爬取动态页面数据2.1 准备工作2.2 完整代码以下内容根据个人学习总结1. 爬取静态页面数据对于一些静态页面而言,爬取相关数据比较简单,主要思路是首先获取网页链接,然后定位数据源码,最后获取其内容以下任务目标为爬取盗...
话说前些日子在微博上看到一个“10年码龄的老码农”QQ群,掐指一算自己从95年接触计算机编程似乎也达到这个标准了,于是突然来了兴致就加入了这个群。这个群真可谓藏龙卧虎,从DOS时期的第一代程序员,到Windows时期的第二代程序员,再到目前互联网时期的第三代程序员,很多重量级的大牛都云集与此,比如简晶、蒋涛、周爱民,会员数在一周内已经达到250人以上,码龄最长的高达25年。看着一帮前辈和同道者们谈...
在GUI里面点击按钮,选择一个文件,在输入框内显示路径用到的全局变量#新建一个窗体程序#导入tkinterimport tkinter,osfrom tkinter import Tkfrom tkinter import filedialognW=tkinter.Tk()nW.title('梨涡的反向工具') #窗口标题nW.geometry('500x300') #窗口尺寸t=tkinter.Text(width=50,height=2)t.pack()glob
当前移动端Android主流应用开发都会涉及到H5页面的加载,通常使用Android WebKit下的控件WebView。用起来很方便,但往往会碰到加载缓慢导致用户体验差的问题。我们尝试集成x5内核,验证一下是否真的对加载速度有所优化。一、腾讯x5的优势1) 速度快:相比系统webview的网页打开速度有30+%的提升; 2) 省流量:使用云端优化技术使流量节省20+%; 3) 更安全:安全问题
给android的wifi设备添加PMF支持时,抓取omnipeek分析。从assoc req 中发现相关标志位没有使能,说明STA 没有使能PMF RSN Capabilities: %0000000000000000 [74-75] xx...... ........ Reserved ...
Android之adb环境变量配置下处部分摘自:http://androidzhou.blog.51cto.com/3852858/722118第一种方法:[size=14.44444465637207px](1)在环境变量中,点击Administrator的用户变量(U)中的新建输入[size=14.44444465637207px]例
1. almost full 和 almost empty flags用来指示只剩一个字了。2. Programmable full and empty status flags可以由用户自定义内容设定或者用专用的输入口进行设定。3. 对于V5的block RAM和built-in FIFO可以使用内嵌的寄存器。使用这个寄存器可以提高FIFO的性能,但是增加延迟。4. FI
Window win = getWindow(); WindowManager.LayoutParams params = win.getAttributes(); win.setSoftInputMode(params.SOFT_INPUT_ADJUST_NOTHING);只需要加上如上代码即可转载于:https://www.cnblo...
Query获取Select选择的Text和Value:语法解释:1.$("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发2. varcheckText=$("#select_id").find("option:selected").text(); //获取Select选择的Text3.