Go语言技术文章
-
Go 切片的二索引写法可能保留底层数组尾部容量,append 会意外覆盖相邻数据。本文用 full slice expression 限制 cap,说明三索引规则、扩容边界和常见误区。406 收藏 -
Golang · Go教程 | 3星期前 | channel · 定时任务 · Go教程 · Go time.Ticker动态调整周期 Go Ticker Reset使用方法 Go定时任务保留状态 Go周期任务动态配置 Go ticker慢任务处理
Go time.Ticker可以通过Reset切换周期,但它只负责发送tick,不负责保存业务游标。本文用单goroutine事件循环拆开周期更新、状态保存、慢任务与退出清理,给出动态调度的可复用实现方式。406 收藏 -
Go slog 字段不该全部放在调用处,也不该全部由 Handler 猜测。事件事实留在调用处,稳定作用域字段用 Logger.With 绑定,Handler 只补 context 或运行环境可统一推导的横切字段。本文给出字段归属表、包装 Handler、降级规则和性能注意。406 收藏 -
maps.Collect 可把 iter.Seq2 的键值对收集到一个新 map 中;重复键会按迭代器产生顺序由后值覆盖前值。本文用记录切片演示重建去重字典,并给出首值保留、版本优先和冲突检测写法。406 收藏 -
解释 Go slog ReplaceAttr 中 groups 为空、零值 Attr、空名称 Group 内联的差别,并给出按分组路径脱敏、删除内置字段和避免回调递归的安全写法。405 收藏 -
sort.Slice 不会替你校验 less 比较器是否构成严格弱序。本文从异常结果、传递性、多字段排序、稳定排序和测试清单说明如何修复比较器。404 收藏 -
Go compress/gzip 读取中途看似正常、到末尾才返回 ErrChecksum,通常是尾部长度或校验和没有通过。本文从 Reader 的结束语义、完整消费代码和 Writer.Close 收尾顺序说明如何定位与修复。404 收藏 -
Go flag.TextVar 同时连接 TextUnmarshaler 和 TextMarshaler:前者解析命令行输入,后者生成默认展示文本。本文用自定义类型说明接收者、类型匹配、帮助输出和错误处理边界。404 收藏 -
用 runtime/cgo.Handle 把包含 Go 指针的状态安全交给 C 保存和回调,说明 NewHandle、Value、Delete 的生命周期、并发边界与常见失效原因。403 收藏 -
pkg.go.dev API 使用 nextPageToken 续取分页结果。本文用 Go 演示如何保留原始查询参数、追加 token、处理空页与重复游标,并给出可恢复的请求循环。403 收藏 -
Go 批量任务不要只返回一个模糊错误:用结构化失败记录保留输入编号与阶段,再用 errors.Join 汇总整批失败状态,并通过 errors.Is、errors.As 支持分类判断和重试。403 收藏 -
用 go fix modernizers 批量迁移旧标准库写法,先预览差异,再按 fixer、Go 版本和构建平台执行,并用测试确认语义边界。403 收藏 -
Go 向已关闭 channel 发送会触发 panic。本文从发送生命周期出发,说明关闭责任如何划分,并给出多发送方等待后统一 close 的迁移写法与排查清单。402 收藏 -
Go 1.27 支持具体类型声明泛型方法。给 Page[T] 增加 Map[U] 后,可把分页元素从模型类型映射为 DTO 类型,编译器负责推断与检查,同时统一保留总数、页码和页大小,并把转换错误明确返回。402 收藏 -
filepath.WalkDir 的回调参数是 fs.DirEntry,不是旧版 Walk 的 fs.FileInfo。本文说明 Type、IsDir 和 Info 的区别,演示如何判断目录、普通文件、特殊文件与符号链接,并处理 Info 失败和遍历错误。401 收藏