Go语言技术文章
-
使用 os.Root 后仍遇到路径校验失败,通常是把根目录再次拼入参数,或混淆了 io/fs 路径与本地路径。本文结合 IsLocal、Localize 和 Root.Open 梳理可直接落地的相对路径规则与排错方法。494 收藏 -
用 Go runtime/trace 的 Flight Recorder 保留延迟尖峰前的有限执行轨迹,配置 MinAge、MaxBytes,并在阈值触发时安全写出快照。493 收藏 -
Go 1.27 的 encoding/json/v2 可用 StringifyNumbers 把数字编码为 JSON 字符串。本文对比调用级选项与字段级 string 标签,给出旧客户端兼容、严格解码、精度测试和灰度退出方案。493 收藏 -
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
讲清 Go time.Ticker 的停止语义、context 取消、慢任务丢 tick 与服务关闭等待,给出可直接改造的周期任务循环。491 收藏 -
Go 代理要把上游响应逐块交给客户端时,可用 ResponseController 统一调用 Flush,并处理包装器、客户端断开、HTTP/2 与反向代理缓冲等边界。491 收藏 -
从 go env 确认 GOMODCACHE 实际路径,区分 GOPATH/pkg/mod 与 GOCACHE,再用父目录、属主和最小写入测试定位权限错误,并给出迁移与复查方案。490 收藏 -
讲清 tls.Config.Clone 的浅拷贝与并发边界,演示连接级配置派生、切片复制、证书池隔离和会话恢复注意事项。488 收藏 -
iter.Pull 把 push 迭代器转换为 next 与 stop 两个函数。只要没有消费到序列末尾,就必须调用 stop;本文从提前返回、并发误用和 goroutine 观测三个方向定位残留。488 收藏 -
Go encoding/json/v2 默认拒绝 JSON 对象里的重复成员名。本文说明如何保持严格默认、避免误用 AllowDuplicateNames,并处理大小写匹配、SemanticError 与 v1 迁移回归。487 收藏 -
Go 1.23 起可用 slices.Chunk 返回 iter.Seq,按固定大小惰性遍历连续子切片。本文用完整示例说明末尾短块、空输入、非法大小、容量裁剪、元素修改与批处理错误定位。487 收藏 -
Go weak.Pointer 适合做不阻止对象回收的弱索引:业务代码保留强引用,索引只保存 weak.Pointer,读取时用 Value 判断对象是否仍可用,并在失效后删除旧条目。487 收藏 -
Go 的 csv.Reader 默认拒绝字段内裸双引号。开启 LazyQuotes 后,非引号字段可包含双引号,引号字段也可出现非成对双引号,但逗号、换行和字段数规则仍然生效。486 收藏 -
Go 的实验性 simd API 不把向量宽度写进类型。本文说明如何用 Len 动态分块,并用 Part 接口正确处理不足一个向量的切片尾部。485 收藏