Go语言技术文章
-
用 Go log/slog 的 Logger.With 在请求入口固定 request_id、method 和 path,再把派生 Logger 传入服务层,让 JSONHandler 输出一致的请求属性,并避开全局污染与敏感字段泄露。149 收藏 -
讲清 Go archive/zip 遍历条目时 File.Open 返回值的关闭时机、循环 defer 的资源滞留原因,以及用 io.LimitReader 控制解压读取量的方法。149 收藏 -
接口断言成功只说明当前动态类型满足目标类型,不能证明 type switch 已覆盖全部输入。本文用 Go 示例定位遗漏 case,并补上 default 兜底和表格测试。149 收藏 -
strings.Builder 已使用后不能按值复制,副本继续写入可能触发异常。本文定位参数、结构体和切片中的隐式复制,给出指针协作与字符串前缀重建两种迁移方式,并解释长度为零和未触发 panic 的误区。149 收藏 -
Go ServeMux 出现路由冲突时,先沿注册阶段的 panic 栈找到两个 pattern,再比较方法、主机和路径的具体程度;交换注册顺序不能解决同等具体的冲突。149 收藏 -
Go transform.Chain 按参数顺序组合文本转换器。本文用宽度折叠、字符映射和 NFC 解释顺序差异,给出字符串与流式写法,并说明错误、状态和资源归属。149 收藏 -
go-flags 可以把 INI section 和键值映射到命令参数结构体。本文从 ini-name 标签、IniParser、ParseAsDefaults、命令行覆盖和 IniError 讲清配置加载的完整写法。149 收藏 -
介绍Go NATS客户端用NewMsg、Header.Set与Add附加消息头,通过PublishMsg发送并读取单值和多值字段,区分发送成功与业务处理确认。149 收藏 -
用 Go oggvorbis 读取 OGG/Vorbis 音频的采样率和声道数,比较 GetFormat 与 NewReader 两条路径,并说明 GetLength、io.ReadSeeker、samples 和解码值数量的边界。149 收藏 -
本文介绍在使用 mgo.v2 驱动操作 MongoDB 时,如何精准地向指定 configid 对应文档的 widgets 嵌套数组中追加新元素,核心是结合 $push 更新操作符与结构化查询条件。 本文介绍在使用 mgo.v2 驱动操作 MongoDB 时,如何精准地向指定 `configid`148 收藏 -
用 Go os.DirFS 暴露静态资源或模板目录时,关键不是把绝对路径换成相对路径,而是确认 io/fs 的 ValidPath 约束、根目录语义和测试边界。本文用一个最小文件服务示例拆开这些判断。148 收藏 -
reflect.Value.Comparable 用来先判断值是否具备 Go == 比较条件。本文从接口值和 slice、map 等不可比较类型出发,说明安全比较的写法、panic 边界与迁移检查点。148 收藏 -
解释 Go bytes.Buffer 的 UnreadByte 何时成功、何时返回错误,并用读取游标、最后一次读取和 Reset 场景给出可复现的核对方法。148 收藏 -
go/ast.Preorder 返回一个按深度优先顺序遍历语法树的迭代器。本文从源码扫描器的高压场景出发,拆解节点顺序、break 提前停止和解析错误的边界,并给出可复查的实现方式。148 收藏 -
用 Go 的 testing.B 对比 json.Marshal 与复用 bytes.Buffer 的 json.Encoder,说明如何固定输入、报告分配次数、避免把准备工作计入循环,并正确解释速度、内存和输出换行差异。148 收藏