开发者社区> 问答> 正文

go程序io过程中报错EOF是什么东西

func main() {
	r := strings.NewReader("Hello, Reader!")

	b := make([]byte, 8)
	for {
		n, err := r.Read(b)
		fmt.Printf("n = %v err = %v b = %v\n", n, err, b)
		fmt.Printf("b[:n] = %q\n", b[:n])
		//fmt.Print(err)
		if err!=nil{
			fmt.Println("错误是:",err)
			break
		}
	}
}

运行结果

n = 8 err = <nil> b = [72 101 108 108 111 44 32 82]
b[:n] = "Hello, R"
n = 6 err = <nil> b = [101 97 100 101 114 33 32 82]
b[:n] = "eader!"
n = 0 err = EOF b = [101 97 100 101 114 33 32 82]
b[:n] = ""
错误是: EOF

展开
收起
水果黄瓜 2021-10-24 09:47:14 4797 0
2 条回答
写回答
取消 提交回答
  • 这是表示读取到了文件末尾,没有新的内容了,可以通过判断该错误,结束文件读写

    2021-10-25 21:42:41
    赞同 展开评论 打赏
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好,从文件中读取n个字节。如果n等于文件的长度,读取过程的任何错误都表示失败。如果n小于文件的长度,调用者会重复的读取固定大小的数据直到文件结束。这会导致调用者必须分别处理由文件结束引起的各种错误。基于这样的原因,io包保证任何由文件结束引起的读取失败都返回同一个错误——io.EOF,该错误在io包中定义。

    2021-10-24 11:30:06
    赞同 1 展开评论 打赏
问答分类:
Go
问答地址:
问答排行榜
最热
最新

相关电子书

更多
gohbase :HBase go客户端 立即下载
多IO线程优化版 立即下载
Go构建日请求千亿级微服务实践 立即下载