[GoLang避坑实战-11] 万物皆 Reader:像老鸟一样玩转 Go 语言的 IO 流

大家好,我是极客老墨。 在很多语言里,文件操作和网络操作是两套完全不同的 API。但在 Go 语言里,无论你是读文件、读网络请求,还是读一段内存字符串,你面对的通常都是同一个东西:io.Reader。 这种**“万物皆 Reader”**的设计哲学,是 Go 语言简洁高效的灵魂所在。这篇我们就来深度拆解 Go 的 IO 体系,让你不仅会用,还能写出高性能的 IO 代码。 1. 核心基石:Reader 与 Writer 接口 Go 的 IO 体系建立在两个极简的接口之上: 1type Reader interface { 2 Read(p []byte) (n int, err error) 3} 4 5type Writer interface { 6 Write(p []byte) (n int, err error) 7} 为什么这两个接口牛逼? 因为它屏蔽了底层实现。只要一个类型实现了 Read 方法,它就是 Reader。你可以把一个“读取文件”的 Reader 直接传给一个“处理 HTTP 响应”的函数。 老墨避坑指南: Read 方法里有个细节——io.EOF。它表示“文件结束”,虽然它是一个 error 类型,但在逻辑处理中,它通常标志着读取成功的终点,而不是程序出错了。所以处理时要先看 n > 0 处理数据,再看 err == io.EOF 退出循环。 ...

2025-06-19 · 2 min · 371 words · 老墨

Python教程25:文件操作基础

Python教程25:文件操作基础 “磁盘是内存的延伸,文件是数据的归宿。” 程序经常需要读取配置文件、处理日志、保存数据。今天我们学习Python的文件操作,掌握数据持久化的基本技能。 1. 文件操作概述 为什么需要文件操作 内存vs文件: 内存(RAM):程序运行时的数据存储,速度快但程序结束后数据消失 文件(磁盘):永久存储数据,程序结束后数据保留 文件操作的应用场景: 读取配置文件(config.ini、settings.json) 处理日志文件(分析服务器日志) 数据持久化(保存用户数据) 批量处理(处理大量CSV、Excel文件) 网络爬虫(保存爬取的数据) Python文件操作的三个步骤 1# 1. 打开文件 2file = open("example.txt", "r") 3 4# 2. 读取/写入文件 5content = file.read() 6 7# 3. 关闭文件 8file.close() 为什么要关闭文件: 释放系统资源 确保数据完全写入磁盘 避免文件被锁定 防止内存泄漏 2. 打开文件:open()函数 open()是Python的内置函数,用于打开文件: 1# open(file, mode='r', encoding=None) 2# - file: 文件路径 3# - mode: 打开模式 4# - encoding: 编码格式(文本文件需要指定) 5 6file = open("data.txt", "r", encoding="utf-8") 文件模式 模式 说明 文件必须存在 覆盖内容 'r' 只读(默认) 是 - 'w' 只写 否(自动创建) 是 'a' 追加 否(自动创建) 否 'x' 独占创建 否(已存在报错) - 'r+' 读写 是 否 'w+' 读写 否(自动创建) 是 'a+' 读写追加 否(自动创建) 否 二进制模式:在模式后加'b' ...

2024-12-26 · 4 min · 827 words · 老墨