Go语言技术文章
-
通过源码调用图与二进制符号表两个证据边界,讲清 govulncheck source、binary 模式的运行方式、结果差异、局限和修复决策。142 收藏 -
Go net.ParseIP 解析 IPv4 时返回十六字节是因为采用了 IPv4-mapped IPv6 表示。本文说明如何用 To4 判断地址族、转换四字节数据,并区分 Equal、To16、ParseCIDR 与 netip 的使用边界。142 收藏 -
解释 Go archive/tar 在 tarinsecurepath=0 下返回 ErrInsecurePath 的原因,给出条目名检查、链接处理和安全解包边界。142 收藏 -
Go 为 exec.Cmd 设置工作目录后,应先赋值 Cmd.Dir,再调用 Cmd.Environ 并写回 Cmd.Env。本文解释正确顺序、重复环境变量覆盖规则,以及 PWD、os.Getwd、getcwd 在符号链接路径下的差异。142 收藏 -
讲清 Go encoding/xml 对缺失元素、空元素和有值元素的映射差异,并用指针字段、TextUnmarshaler 与 UnmarshalXML 保留协议中的可选状态。142 收藏 -
encoding/json/v2 解码到 any 时,JSON 数字仍默认使用 float64。本文给出两种避免精度丢失的写法:已知结构直接声明整数类型,动态结构通过 WithUnmarshalers 保留 jsontext.Value,再按业务显式转换。142 收藏 -
并行基准测试不能把 RunParallel 回调里的 PB.Next 直接替换成 B.Loop。本文区分普通基准循环与并行工作分配,给出 B.Loop 迁移范围、RunParallel 正确写法、计时器边界和 Go 版本兼容检查。142 收藏 -
使用 Go mod graph 精确筛选目标模块的全部父依赖,并结合 go list -m 与 go mod why 区分版本要求、实际选中版本和包导入路径,说明依赖调整前后的记录方法与升级判断边界。142 收藏 -
使用 slices.IndexFunc 按谓词查找切片的首个匹配元素,重点说明索引返回值、未命中时的 -1,以及空切片的安全处理。142 收藏 -
Go filepath.Match遵循目标操作系统规则。本文通过反斜杠差异、单文件名筛选函数及预期用例,解释整串匹配、大小写和ErrBadPattern,并区分模式命中与跨平台文件名合法性。142 收藏 -
gofmt 在不同 CPU 架构上出现列对齐差异,通常是格式化器对齐决策的实现差异。本文说明 Go 1.27 的修复范围,并给出统一工具链、提交检查和升级处理方法。142 收藏 -
Go 1.24 引入 encoding.TextAppender 和 BinaryAppender。本文从日志缓冲区场景出发,验证 AppendText 的追加语义、错误回退和分配边界。141 收藏 -
围绕 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 收藏