Go语言技术文章
-
用 Go x/text/cases.Fold 生成 Unicode 不区分大小写的比较键,说明 String、Bytes、并发复用和不等于规范化的边界。461 收藏 -
go-vcard 的 VERSION 只是卡片版本标记,不能代表完整迁移。本文结合 ToV4 的实现说明 Card、字段参数和 Encoder 的关系,解释 TYPE=pref 为什么要转换为 PREF=1,并给出解析、转换、编码的 Go 写法与边界清单。461 收藏 -
Go 的 go/format.Node 可以把 AST 节点按 canonical gofmt 风格写入 io.Writer。本文从 parser.ParseFile 开始,说明 FileSet、节点范围、错误处理,以及 Node 与 Source 的取舍。461 收藏 -
Go 1.22 以后,ServeMux 会在注册互相冲突的方法模式时直接 panic。本文用最小复现说明冲突判定规则,并给出统一通配符、拆分 HTTP 方法和处理版本迁移的修复方式。461 收藏 -
Go go list -test -json 展示测试构建相关包信息,配合 -deps 可展开依赖包对象。说明 ImportPath、ForTest、DepOnly、测试导入字段及连续 JSON 解码的使用方式。461 收藏 -
Go 1.23 提供的 slices.Chunk 可以把切片按固定大小变成批次迭代器。本文从一个可中止的批处理场景出发,说明空输入、最后一批不足 n 个元素、n<=0 以及子切片容量边界。461 收藏 -
说明 Go encoding/json.Decoder 没有公开的单次嵌套深度参数,拆开字节上限、业务深度扫描和标准库固定内部保护,给出受控读取与失败处理的完整写法。461 收藏 -
Go事务遗漏Rollback可能持续占用连接。通过库存预留示例覆盖业务提前返回,说明延迟回滚、提交结果、上下文取消和连接池等待的判断。461 收藏 -
io.ReadAll 会一直读取到 EOF,并不会替调用方设定业务大小上限。本文从 Go HTTP 响应体失控导致 OOM 的现象出发,说明失败响应、未知长度和分块传输的排查顺序,并用 io.LimitReader、多读一个字节识别超限,给出流式处理大响应的替代方案。461 收藏 -
处理用户提供的文件名时,filepath.Join 加 os.Open 可能被 .. 或符号链接带出指定目录。本文用 Go 1.24 的 os.Root 与 os.OpenInRoot 拆开安全打开、错误判断、资源关闭和平台边界,给出可复查的小示例。460 收藏 -
os.File.Sync 会把文件系统缓存中的当前内容提交到稳定存储,但它不是事务提交,也不能替应用目录的重命名与目录同步。本文用 Write、Sync、Close 的错误处理顺序拆开落盘边界。460 收藏 -
Go 1.27 引入实验性的 simd 与 archsimd 后,部分 ARM64 板卡运行测试会触发 SIGILL。本文结合 RK3588 问题说明非法指令的来源、硬件能力边界与安全排查方式。460 收藏 -
Go 1.22 扩展了 net/http ServeMux 的方法和通配符模式。本文用一张资源路由表说明如何组合 GET、POST、DELETE,判断模式覆盖关系,避免注册期冲突,并处理 PathValue、尾斜杠和旧版本兼容边界。460 收藏 -
Go 普通 map 遇到并发读写时可能触发 fatal error。本文从访问边界、锁方案、sync.Map 和 channel 所有权对比入手,给出排查与修复清单。460 收藏 -
filepath.WalkDir 的错误不只来自文件本身。本文按根路径、目录读取和子项回调三类入口,讲清 d 为 nil、SkipDir 与 SkipAll 的处理边界。460 收藏