Go教程技术文章
-
reflect.Value.IsZero 判断的是值所属类型的 Go 零值,不等同于字段为空、结构体没有可见内容或切片长度为零。本文用结构体、空集合和无效 Value 的对比示例说明边界,并给出更合适的判断选择。156 收藏 -
多个 Go 进程追加写同一个日志文件时,不要先 Seek 再 Write。本文从零实现一个 appendlog 小工具,讲清 O_APPEND 的正确用法、单次写入边界、关闭错误,以及什么时候必须增加锁或外部队列。179 收藏 -
Go os.File.Sync 成功后仍然需要 Close。本文区分持久化与释放句柄的职责,说明缓冲写入先 Flush、关键文件正确处理 Close 错误,以及替换文件时的收尾顺序。369 收藏 -
Go os.Rename 在 Unix 与 Windows 下对打开文件的处理不同。本文用同目录临时文件、句柄关闭、进程内读写锁和有限重试,设计不删除旧文件的跨平台替换方案。107 收藏 -
Go io.TeeReader 不会复制出两个独立 Reader,而是在下游读取时同步把已读字节写入 Writer。本文用缓存、文件和限流组合说明数据方向、错误传播及审计场景的边界。126 收藏 -
io.LimitReader 返回 EOF 不代表底层 reader 一定结束。本文拆解 LimitedReader 的读取顺序,用字节数判断边界,并给出固定长度读取与额外探测的选择方法。399 收藏 -
Go io.CopyBuffer 的缓冲区不是越大越快。本文从 WriterTo/ReaderFrom 复制路径、32 KiB 基线、并发内存预算和错误边界出发,说明如何选择 32、64 或 128 KiB,并给出可复用的文件复制示例。313 收藏 -
Go filepath.Match 的方括号表示单字符类,可用范围和 ^ 排除规则匹配文件名;本文同时说明整串匹配、转义、Windows 分隔符以及 ErrBadPattern 的处理方式。390 收藏 -
Go filepath.Rel 遇到绝对路径和相对路径混用时,先用 filepath.Abs 统一计算基准,再处理跨根目录、../ 越界、符号链接和 URL 路径等边界。288 收藏 -
用 Go filepath.WalkDir 遍历目录时,SkipDir 只跳过当前目录,SkipAll 才能停止剩余遍历。本文通过查找文件示例说明错误处理、提前停止和未找到结果的区别。126 收藏 -
Go 的 string 不保证天然是合法 UTF-8。用 unicode/utf8.ValidString 在入库前做字节级拦截,再叠加长度、格式和数据库字符集检查,才能避免坏编码混入数据层。272 收藏 -
用 Go utf8.DecodeRune 扫描原始字节时,RuneError 只有配合 size==1 才能判断非法编码,并通过字节游标准确定位原始偏移。177 收藏 -
Go 的 utf8.DecodeLastRuneInString 处理空字符串时返回 RuneError 和 size=0。本文用返回值对照、UTF-8 多字节裁剪示例,区分空输入、合法 U+FFFD 与非法尾字节。463 收藏 -
regexp.QuoteMeta 只能构造正则字面量,不能替你修正 Go 字符串字面量。处理 Windows 路径时要分清源码、运行时字符串和 RE2 模式三个边界。316 收藏 -
讲清 Go regexp.ReplaceAllStringFunc 的回调输入边界,演示如何隔离计数和去重状态,并处理并发调用、捕获组与 API 选择,避免结果串线和数据竞争。370 收藏