当前位置: 首页 > news >正文

Go中各种newreader和newbuffer的使用

一、bytes.NewBuffer和bytes.NewReader

func main() {var byteArr []bytebuf := bytes.NewBuffer(byteArr)buf.Write([]byte("今天不错"))fmt.Println(buf.String())
}
package mainimport ("bytes""fmt"
)func main() {data := []byte("路多辛的所思所想")reader := bytes.NewReader(data)// 读取整个字节数组buf := make([]byte, len(data))_, err := reader.Read(buf)if err != nil {fmt.Println("Read failed:", err)}fmt.Println("Bytes read:", buf)// 读取字节切片的一部分part := make([]byte, 3)_, err = reader.Read(part)if err != nil {fmt.Println("Read failed:", err)}fmt.Println("Bytes read:", part)// 查找并读取字节切片中的某个字符offset, err := reader.Seek(6, 0)if err != nil {fmt.Println("Seek failed:", err)}ch, size, err := reader.ReadRune()if err != nil {fmt.Println("ReadRune failed:", err)}fmt.Printf("Read %c with size %d at offset %d\n", ch, size, offset)
}

二、strings.NewReader(没有newWriter)

	r := strings.NewReader("abcdefghijklmn")fmt.Println(r.Len())   // 输出14  初始时,未读长度等于字符串长度var buf []bytebuf = make([]byte, 5)readLen, err := r.Read(buf)fmt.Println("读取到的长度:", readLen) //读取到的长度5if err != nil {fmt.Println("错误:", err)}fmt.Println(buf)            //adcdefmt.Println(r.Len())        //9   读取到了5个 剩余未读是14-5fmt.Println(r.Size())       //14   字符串的长度

三、bufio.NewReader和bufio.NewWriter

package main
import ("fmt""io""os"
)
func main() {fmt.Println("嗨客网(www.haicoder.net)")fileName := "C:/haicoder.txt"file, err := os.Open(fileName)if err != nil{fmt.Println("Read file err, err =", err)return}defer file.Close()var chunk []bytebuf := make([]byte, 1024)for{n, err := bufio.NewReader(buf)if err != nil && err != io.EOF{fmt.Println("read buf fail", err)return}//说明读取结束if n == 0 {break}//读取到最终的缓冲区中chunk = append(chunk, buf[:n]...)}fmt.Println("File Content =", string(chunk))
}
package main
import ("bufio""fmt""io/ioutil""os"
)
func main() {fmt.Println("嗨客网(www.haicoder.net)")var(fileName = "C:/haicoder.txt"content = "Hello HaiCoder"file *os.Fileerr error)//使用追加模式打开文件file, err = os.OpenFile(fileName, os.O_APPEND, 0666)if err != nil{fmt.Println("Open file err =", err)return}defer file.Close()writer := bufio.NewWriter(file)//写入文件n, err := writer.Write([]byte(content))if err != nil{fmt.Println("Write file err =", err)return}fmt.Println("Write file success, n =", n)writer.Flush()//读取文件fileContent, err := ioutil.ReadFile(fileName)if err != nil{fmt.Println("Read file err =", err)return}fmt.Println("Read file success =", string(fileContent))
}

总结:
1、使用的newbuffer,缓存区是用来存储内容的,并不能确定具体需要的内存大小,因此newbuffer的参数为不固定的[]byte{};
2、使用的newreader,缓存区应该是有数值的,此时是用来读取其中的内容。

相关文章:

Go中各种newreader和newbuffer的使用

一、bytes.NewBuffer和bytes.NewReader func main() {var byteArr []bytebuf : bytes.NewBuffer(byteArr)buf.Write([]byte("今天不错"))fmt.Println(buf.String()) }package mainimport ("bytes""fmt" )func main() {data : []byte("路多…...

visual studio 如何建立 C 语言项目

安装这个 模块。 新建 空项目 创建完成 写demo 点击运行:...

app小程序定制开发的优势|企业软件网站建设

app小程序定制开发的优势|企业软件网站建设 小程序定制开发是目前互联网行业中备受关注的领域之一。随着智能手机的普及和移动互联网的迅猛发展,越来越多的企业和个人开始重视小程序的潜力,并积极寻求定制开发的服务。那么,为什么小程序定制开…...

物联网AI MicroPython学习之语法 WDT看门狗外设

学物联网,来万物简单IoT物联网!! WDT 介绍 模块功能: 看门狗WDT(WatchDog Timer)外设驱动模块 接口说明 WDT - 构建WDT对象 函数原型:WDT(timeout)参数说明: 参数类型必选参数&#xff1f…...

JVM线程的几种状态

1.New 新建的线程,线程还没启动。 2.Runnable 线程正在运行或者等待操作系统中的其他资源,例如线程运行过程中,系统分配资源给其他操作,此时这个线程还是Runnable状态,可以理解为可运行的线程。 3.Blocked 阻塞状…...

基于单片机停车场环境监测系统仿真设计

**单片机设计介绍, 基于单片机停车场环境监测系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的停车场环境监测系统是一种利用单片机技术实现环境监测和数据处理的系统。它可以感知停车场的温湿…...

每日一题:LeetCode-589.N叉树的前序遍历

每日一题系列(day 01) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…...

PTA 7-2 简单计算器

7-2 简单计算器 分数 20 全屏浏览题目 作者 张彤彧 单位 浙江大学 模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。 输入格式: 输入在一行中给出一个四则运…...

9、鸿蒙应用桌面图标外观和国际化

一、项目资源目录 项目下的resoueces目录为资源配置目录,其中base为基础配置,即在任何语言环境下都会加载的资源, color.json:用于配置颜色,如页面的背景和文字的颜色。 string.json:用于设置文字&#…...

oracle rac 19c修改不同网段public ip

客户需求将才搭建的oracle 19.19数据库从192.168.168.0网段调整到192.168.213网段 1.停止两个节点集群 停止之前最好ocrdump一下,防止有问题 crsctl stop crs 2.修改public ip地址和/etc/hosts 3. 启动crs 这时集群可以启动,但是上面的一些资源启动会…...

【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。 全…...

OpenAI宣布暂停ChatGPT plus用户订阅,解决方案,无需等待立马升级

作为人工智能领域的一项重要革新,ChatGPT Plus的上线引起了众多用户的关注,其背后的OpenAI表现出傲娇的态度,被誉为下一个GTP 4.0。总的来说,ChatGPT Plus的火爆主要有两个原因。首先,其在人工智能对话技术领域的创新&…...

如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中

文章目录 第一步:准备 CentOS 服务器第二步:安装 Node.js 和 Docsify第三步:初始化 Docsify 项目第四步:本地预览 Docsify 项目第五步:配置 Nginx 服务器第六步:重启 Nginx 服务器拓展:使用 HTT…...

小程序存在优惠卷遍历,但是歪了

进入小程序,因为是一个小商城,所以照例先查看收货地址是否存在越权,以及能否未授权访问,但是发现不存在这些问题,所以去查看优惠卷 进入领券中心,点击领取优惠券时抓包 发现数据包,存在敏感参数…...

HarmonyOS第一课-对比Kotlin,快速入门TypeScript

编程语言简介 基础类型 1. 布尔值 TypeScript 和 Kotlin: 两者都有 boolean 类型,用于表示 true 或 false。 ts示例: let isDone:boolean falsekotlin示例: val isDone: Boolean false2. 数字 TypeScript: 有 number 类型&#xff0c…...

【自动驾驶】一些业内自动驾驶专业术语释义

Trajectory 轨迹信息,一般都会发布未来5-10秒的trajactory信息。 Trajectory flicker 轨迹抖动 Nudge 道内避障。在维持车道不变的情况下,横向偏离车道中心以绕开obstacle/agent。 Xlane Nudge 借道避障。借用对向车道或自行车道以绕开obstacle/a…...

好用的博客评论系统 Valine 使用及避坑指南

评论系统,即网站的一个小功能,展示评论内容和用户输入框。开源免费的评论系统可不多,原来很火的"多说"评论系统都关闭了,而Disqus又是国外的访问受限。无意间发现了Valine,挺不错的,分享给大家。…...

【Mysql】[Err] 1293 - Incorrect table definition;

基本情况 SQL文件描述 /* Navicat MySQL Data TransferSource Server : cm4生产-200 Source Server Version : 50725 Source Host : 192.168.1.200:3306 Source Database : db_wmsTarget Server Type : MYSQL Target Server Version : 50725 File…...

SpringBoot——日志及原理

优质博文:IT-BLOG-CN 一、SpringBoot日志 选用 SLF4j(接口)和 logback(实现类),除了上述日志框架,市场上还存在 JUL(java.util.logging)、JCL(Apache Commons Logging)、Log4j、Log4j2、SLF4j…...

7种SQL的进阶用法

1.自定义排序(ORDER BY FIELD) 在MySQL中ORDER BY排序除了可以用ASC和DESC之外,还可以使用自定义排序方式来实现。 CREATE TABLE movies ( id INT PRIMARY KEY AUTO_INCREMENT, movie_name VARCHAR(255), actors VARCHAR(255), price DEC…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...