golang io需要牢记的几个点

对于Reader比较麻烦需要记住以下:

When Read encounters an error or end-of-file condition after successfully reading n > 0 bytes, it returns the number of bytes read. It may return the (non-nil) error from the same call or return the error (and n == 0) from a subsequent call

对于Write比较简单需要记住一下:

Write writes len(p) bytes from p to the underlying data stream. It returns the number of bytes written from p (0 <= n <= len(p)) and any error encountered that caused the write to stop early. Write must return a non-nil error if it returns n < len(p). Write must not modify the slice data, even temporarily.

对于ByteReader:就是一个字节一个字节的读

buio是对io的上层封装,他处理了一些常规错误情况等,另外读取支持读取到遇到某个字节为止,等等,还有一些其他很常用的功能。

时间: 2024-10-13 18:37:09

golang io需要牢记的几个点的相关文章

简析 Golang IO 包

简析 Golang IO 包 io 包提供了 I/O 原语(primitives)的基本接口.io 包中定义了四个最基本接口 Reader.Writer.Closer.Seeker 用于表示二进制流的读.写.关闭和寻址操作.这些原语和接口是对底层操作的封装,因此如没有特殊说明,这些原语和接口都不能被视为线程安全的. Reader Reader 接口封装了基本的 Read 方法.Read 读取长度为 len(p) 字节的数据,并写入到 p.返回结果包含读取数据字节数(0 <= n <= len(

golang io操作之写篇

/** * @author livalon * @data 2018/9/4 15:11 */ package main import ( "os" "fmt" "io" "encoding/json" ) func main() { var a [][]float64 num :=10 for i:=0;i<num ;i++ { var temp []float64 for i:=0;i<num ;i++ { t

golang io/ioutil包简单使用

package main import ( "fmt" "io/ioutil" "strings" ) func main() { r1 := strings.NewReader("aaa") //返回ReadCloser对象提供close函数 rc1 := ioutil.NopCloser(r1) defer rc1.Close() //ReadAll读取所有数据 p, _ := ioutil.ReadAll(strings

golang array, slice, string笔记

本来想写一篇关于golang io的笔记,但是在学习io之前必须了解array, slice, string概念,因此将在下篇写golang io. array: 数组的长度是该数组类型的一部分,例如var buffer [256]byte 的类型是[256]byte, len(buffer)总是返回256. slice: 一个slice描述一个数组中连续的一部分,例如var slice = buffer[100:250].slice也可以从slice产生,如var slice2 = slice

golang的io包

package io import "io" io包提供了对I/O原语的基本接口.本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作. 因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的. Index Variables type Reader type Writer type Closer type Seeker type Re

关于golang中IO相关的Buffer类浅析

io重要的接口 在介绍buffer之前,先来认识两个重要的接口,如下边所示: type Reader interface { Read(p []byte) (n int, err error) } type Writer interface { Write(p []byte) (n int, err error) } 上边两个接口在golang sdk安装目录src/io/io.go中定义.后边凡是涉及到io相关操作的,基本上都实现了这两个接口,如: 1. package bufio 中的Rea

golang的io.copy使用

net/http 下载 在golang中,如果我们要下载一个文件,最简单的就是先用http.get()方法创建一个远程的请求后,后面可使用ioutil.WriteFile()等将请求内容直接写到文件中. func DownFile() { url :="http://wx.qlogo.cn/Vaz7vE1/64" resp ,err := http.Get(url) if err != nil { fmt.Fprint(os.Stderr ,"get url error&qu

Golang进阶实战之IO操作

文件读写 12345678910111213141516171819202122232425262728293031323334 func () { fileInfo, err := os.Stat("aaa.txt") if err != nil { fmt.Println("error") return } fmt.Println(fileInfo) fmt.Println(fileInfo.Name()) fmt.Println(fileInfo.Size()

Golang 文件读写之 os, bufio, io/ioutil 初体验

package main   import (      //"bufio"      "fmt"      //"io"      "io/ioutil"      "os"      "time"  )   func main() {       file1, err := os.OpenFile("hehehe.txt", os.O_RDWR|os.O_APPE