Go语言技术文章
-
gif.EncodeAll 要求 Image、Delay 与非 nil Disposal 按帧对齐。本文给出严格检查、同步筛帧和受控补齐的安全写法。143 收藏 -
Go 1.22 起可以直接用 zip.Writer.AddFS 把 fs.FS 目录树写入 ZIP。本文说明 os.DirFS、fs.Sub、路径前缀、非普通文件和 Writer.Close 的关键边界。143 收藏 -
PATH 是多个路径组成的列表,不能用 filepath.Split 当作单一路径处理。本文对比 ListSeparator 与 Separator,说明 Go 中如何跨平台拆分 PATH,以及空输入、清理和绝对化的边界。143 收藏 -
Go channel 关闭后,接收方可以用 comma-ok 判断状态,也可以用 range 自动读到结束;真正容易出错的是发送方与关闭方的职责边界。本文用最小示例说明判断、排空和并发收尾的正确写法。142 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · golang · JSON · 配置管理 · go · 工程实践 · 空值处理 encoding/json Go教程 MarshalText encoding.TextMarshaler 配置序列化
同一个配置值如果在 JSON、日志和环境变量之间各写一套转换,很快就会出现格式漂移。本文用 encoding.TextMarshaler 统一文本表示,拆开 json.Marshal 的调用规则、指针接收者、错误处理和 nil 边界,并给出可运行的验证示例。142 收藏 -
Go 里用 sort.Slice 和 sort.SliceStable 排序时,真正容易忽略的是相等元素的顺序与 less 比较函数约束。本文用一组带优先级和序号的记录,演示两者差异、稳定排序的适用边界和可复查写法。142 收藏 -
用 Go 的 io/fs.Sub 把嵌入文件系统收窄到一个子目录时,真正容易出错的是目录名和 Open 路径的边界。本文通过 embed.FS 示例拆开 fs.Sub、fs.ValidPath 与 fs.PathError 的关系,并给出可复现的排查方法。142 收藏 -
用 bytes.CutPrefix 处理协议前缀,验证前缀命中、空前缀、未命中和返回切片共享等边界,避免手写切片下标时误判输入。142 收藏 -
通过源码调用图与二进制符号表两个证据边界,讲清 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 收藏