Go问答技术文章
-
Go 1.27 提升了 compress/flate 的压缩速度,也可能改变 Writer 输出字节。本文区分字节快照与解压语义,给出升级测试和必须锁定产物的判断方法。194 收藏 -
Go exec.Command 使用裸程序名时会经过 PATH 查找,Go 1.19 起不会隐式执行当前目录中的程序。本文说明 ErrDot 原因、显式相对路径写法,以及 Dir、PATH 和兼容处理的区别。194 收藏 -
json.Decoder.Decode 返回 nil 只说明成功读取了下一个 JSON 值,并不保证输入流已结束。本文用二次 Decode 与 io.EOF 检查,区分空白结尾、第二个 JSON 值和非法尾随字节。194 收藏 -
Go 进程内的反射缓存应优先直接使用 reflect.Type 做键,因为 Type 可比较并表示精确类型身份,而 Type.String 与名称并不保证唯一。本文从错误命中复盘出发,说明指针归一化、泛型实例、匿名类型及跨进程模式键的取舍。194 收藏 -
Go 1.21 引入的 log/slog 让结构化日志更容易落地,但字段从 slog.Any 到 Handler 再到 JSON 输出时,组、动态值和敏感字段仍有边界。本文用订单请求日志拆解字段流转、Handler 包装与脱敏验证。193 收藏 -
Go 泛型代码里,值类型约束明明包含目标类型,却可能无法调用指针接收者方法。本文用类型集、方法集和可运行示例拆开这个边界,并给出约束与调用方都能验收的写法。193 收藏 -
面对字段层级不固定、又不适合一次性读入内存的 JSON,Go 的 encoding/json.Decoder.Token 可以逐个读取语法令牌。本文用对象中嵌套数组的例子说明流式游标、json.Delim、dec.More 与提前结束时的错误边界。193 收藏 -
Go 私有模块报错时,GOPRIVATE、GOPROXY、GONOPROXY 与 GONOSUMDB 解决的不是同一件事。本文从实际生效配置、报错位置和企业代理场景拆分排查路径。193 收藏 -
解释 Go slog LevelVar 修改后旧 Handler 仍能生效的原因,比较动态 Leveler 与静态 slog.Level 快照,并给出配置和测试方法。193 收藏 -
说明Badger迭代器持有的底层引用、预取任务与活动计数,区分Close和事务结束,给出提前返回、循环扫描的清理写法及内存排查注意事项。193 收藏 -
Go 1.27 调整了 //line 与 /*line*/ 指令中相对文件名的解析基准。本文用生成代码场景说明目录基准、绝对路径、诊断核对和发布前检查,避免错误定位把锅甩给业务代码。192 收藏 -
Go 的 PathEscape 用于 URL 路径段,QueryEscape 用于查询参数值。两者对斜杠、加号和与号的处理不同,混用会导致路径层级变化或查询参数串位。本文用最小示例和 url.Values 说明选择方法。192 收藏 -
Scanner.Bytes 返回的是可能被下一次 Scan 覆盖的底层字节视图。本文解释前面行会变化的原因,并给出 string、bytes.Clone 和 bufio.Reader 的选择。192 收藏 -
Golang · Go问答 | 1星期前 | 依赖管理 · go · go work sync go work vendor Go workspace inconsistent vendoring Go依赖同步
Go 多模块工作区出现 inconsistent vendoring 时,关键不是手改 vendor/modules.txt,而是先确认 GOWORK 和 use 范围,再同步工作区构建列表、整理模块依赖并重建 workspace vendor。本文给出可复用的排查、同步和 CI 验证步骤。192 收藏 -
同一个无时区日期在不同机器上出现一天偏移,通常不是日期字符串变了,而是解析位置没有明确。本文从 time.Parse 的 UTC 默认行为出发,说明 time.ParseInLocation 如何绑定 Location,并处理显式偏移、时区缩写、IANA 时区加载和夏令时边界。192 收藏