Go语言技术文章
-
Go filepath.WalkDir 遇到权限目录时,不要直接让整个遍历失败。先判断回调 err 和 d,再用 errors.Is 识别 fs.ErrPermission,并按场景选择返回 nil、fs.SkipDir、fs.SkipAll 或原始错误。425 收藏 -
Go 服务从终端切换到脚本或服务管理器后,相对路径可能因为工作目录变化而失效。本文用 os.Getwd 确认现场,在启动阶段用 filepath.Abs 固定路径,并说明为什么不应在运行中随意 os.Chdir。261 收藏 -
Go 目录读取不能只看 error。os.ReadDir 可能返回已经读到的目录项和错误;os.File.ReadDir 按批次读取时要先处理 entries,再区分 io.EOF 与真正的读取失败。162 收藏 -
Go 写文件后读不到最新内容,应先区分用户态缓冲与文件同步。本文说明 bufio.Writer.Flush、os.File.Sync 和 Close 的职责,用独立临时文件演示错误处理,并解释读取游标、旧读取缓冲与持久化目标的差别。460 收藏 -
Go 的 os.Rename 在 Windows 上失败,常见原因是文件句柄未关闭、目标路径是目录或跨目录限制。本文用 LinkError 保留上下文,并给出同目录临时文件发布方式。472 收藏 -
Golang · Go问答 | 5天前 | 性能优化 · bufio · Go问答 · Go write FLUSH bufio.Writer available buffered NewWriterSize
Go bufio.Writer 的缓冲区大小应围绕写入粒度、并发量和内存预算选择。本文用 NewWriterSize 设置容量起点,说明 Buffered、Available、Size 的观察方式,并把 Flush、Close 和错误处理放入完整的资源边界。292 收藏 -
bufio.Reader.Peek 返回长度不足时,不能只看切片长度或直接索引请求位置。本文区分 ErrBufferFull、EOF 和底层错误,说明 Peek 不推进读取位置的边界,并给出复制预览结果、再用 io.ReadFull 消费固定长度的处理方式。467 收藏 -
encoding/csv.Reader 默认会用第一条记录的字段数约束后续记录。本文说明 FieldsPerRecord 的三种配置方式,演示如何在严格校验、可变列和保留错误行之间做选择,并处理字段数量变化带来的导入问题。230 收藏 -
io.Pipe 消费端提前退出后,应先用读端 CloseWithError 通知写端,再等待生产协程。本文区分两端关闭职责与错误传播,给出有限数据示例,并说明 nil、重复关闭、部分写入和上游阻塞的处理范围。185 收藏 -
Go io.Copy 本身不会因为文件很大就把整个文件读入内存。遇到内存异常增长时,应先检查 WriterTo、ReaderFrom 快路径,再排除 bytes.Buffer、io.ReadAll 和长期引用等累计路径。471 收藏 -
io.LimitedReader 的 N 是剩余读取预算,不是底层文件或网络流的真实长度。本文按 N、读取字节数和 error 分层判断达到上限、源数据提前 EOF 与其他错误,并给出固定长度读取的选择。337 收藏 -
strings.Reader.Seek 的 offset 是字节偏移,whence 决定它相对开头、当前位置还是结尾计算。本文用 UTF-8、边界错误和可重复读取示例说明为什么会读到错误位置,以及如何检查返回位置和错误。366 收藏 -
Go strings.Replacer 适合把多组固定文本替换规则集中管理。本文说明 NewReplacer 的成对参数、重叠键的顺序、Replace 与 WriteString 的选择,以及规则复用时的边界。122 收藏 -
Go 解码无填充标准 Base64 应按协议选择 RawStdEncoding,而非随意删除等号。本文解释填充分组、解码器选择和错误时的部分数据,给出入口封装,并说明兼容迁移、Strict 与空白处理的范围。366 收藏 -
Go 中 json.Valid 通过并不代表 json.Unmarshal 一定成功。本文从语法有效、目标类型匹配和目标参数合法三个层次,说明如何用错误类型、字段路径和偏移量定位解码失败。199 收藏