Go教程技术文章
-
Go 的 os.ReadDir 默认按文件名返回目录项;如果业务还要按修改时间排序,应先读取 DirEntry.Info,再用稳定排序保留文件名作为平局规则。本文给出可直接改造的实现和错误处理边界。143 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · golang · JSON · 配置管理 · go · 工程实践 · 空值处理 encoding/json Go教程 MarshalText encoding.TextMarshaler 配置序列化
同一个配置值如果在 JSON、日志和环境变量之间各写一套转换,很快就会出现格式漂移。本文用 encoding.TextMarshaler 统一文本表示,拆开 json.Marshal 的调用规则、指针接收者、错误处理和 nil 边界,并给出可运行的验证示例。142 收藏 -
用 Go 的 io/fs.Sub 把嵌入文件系统收窄到一个子目录时,真正容易出错的是目录名和 Open 路径的边界。本文通过 embed.FS 示例拆开 fs.Sub、fs.ValidPath 与 fs.PathError 的关系,并给出可复现的排查方法。142 收藏 -
通过源码调用图与二进制符号表两个证据边界,讲清 govulncheck source、binary 模式的运行方式、结果差异、局限和修复决策。142 收藏 -
Go 为 exec.Cmd 设置工作目录后,应先赋值 Cmd.Dir,再调用 Cmd.Environ 并写回 Cmd.Env。本文解释正确顺序、重复环境变量覆盖规则,以及 PWD、os.Getwd、getcwd 在符号链接路径下的差异。142 收藏 -
讲清 Go encoding/xml 对缺失元素、空元素和有值元素的映射差异,并用指针字段、TextUnmarshaler 与 UnmarshalXML 保留协议中的可选状态。142 收藏 -
使用 Go mod graph 精确筛选目标模块的全部父依赖,并结合 go list -m 与 go mod why 区分版本要求、实际选中版本和包导入路径,说明依赖调整前后的记录方法与升级判断边界。142 收藏 -
围绕 Go maps.DeleteFunc 清理不合格键,解释回调遍历期间的删除语义、判定函数副作用、nil map 行为与并发安全边界,并给出可验证的代码和检查清单。141 收藏 -
用 Go netip.Prefix.Contains 实现路由白名单时,IPv4、IPv4-mapped IPv6 与前缀长度必须先统一判断,本文给出可运行的核验方法。141 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · 性能 · 迭代器 · 字符串处理 · Go教程 · Go Go 1.24 iter.Seq strings.SplitAfterSeq 字符串分段
strings.SplitAfterSeq 从 Go 1.24 开始返回单次使用的 iter.Seq[string],按分隔符产出保留分隔符的字符串片段。本文用一个可运行的小实验说明如何消费它、如何提前停止,以及空分隔符和无匹配时该如何验收。141 收藏 -
Go 1.26 的 newexpr fixer 可以把 newInt(10) 一类辅助函数改成 new(10)。本文从可选指针字段出发,说明 go fix -newexpr 的适用条件、go.mod 版本门槛,以及公共 API 删除前的回归边界。141 收藏 -
maps.Clone 会创建独立的顶层 map,但只做浅拷贝。本文用配置快照示例说明字符串、结构体、切片、嵌套 map 与指针字段的边界,并给出测试和深拷贝方案。141 收藏 -
Go 的 ResolveReference 能按 RFC 3986 正确组合相对地址,但它也会接受绝对 URL 和网络路径引用。本文给出同源校验、目录边界限制与表驱动测试写法。141 收藏 -
encoding/json/v2 默认忽略未知 JSON 成员,严格接口可用 RejectUnknownMembers 定位错误,需要透传时可用 embed fallback 保留扩展字段。本文按旧客户端、新客户端、严格命令和网关转发四类场景给出兼容策略与回归清单。141 收藏 -
多个 Go 生产者共享 channel 时,由唯一协调者等待全部发送者退出后关闭输出。本文给出原创实现、固定负载基准入口,以及正常计数和取消收尾的观测边界。141 收藏