Go问答技术文章
-
Golang · Go问答 | 4天前 | golang · slog · 日志排查 · 结构化日志 · Go 1.21 · 结构化日志 JSON日志 Go slog.WithGroup slog嵌套字段 日志属性
Go slog.Logger.WithGroup 用组名组织结构化日志字段,但空组名不会创建嵌套层,属性归属还会受到 Handler 处理规则影响。本文用 JSON 输出示例拆解 WithGroup、WithAttrs 和重复组名的边界。247 收藏 -
Go 接收多种 JSON 事件时,不必一开始把所有 payload 解成 interface{}。用 json.RawMessage 保留原始 JSON,再按 kind 分流解析,可以减少无效结构体和类型断言;但它仍然持有字节数据,不能替代大小限制、深拷贝和错误校验。421 收藏 -
maps.Clone 能复制 Go 的 map 容器,但它只做浅拷贝:值是切片、map 或指针时,嵌套数据仍可能共享底层对象。本文用配置快照场景说明互相影响的原因、如何按层复制,以及什么时候不必做深拷贝。139 收藏 -
Golang · Go问答 | 4天前 | golang · 泛型 · 性能 · unique · Go 1.23 · 内存管理 值规范化 unique.Handle Go unique.Make 字符串缓存
Go 1.23 的 unique.Make 可以把可比较值规范化为可廉价比较的 Handle,但它不是无条件的字符串驻留池。本文从标签解析缓存场景出发,拆开 Make、Handle、Value 和垃圾回收之间的关系,说明何时值得用、如何保留句柄,以及为什么不能只存 Value。483 收藏 -
Golang · Go问答 | 4天前 | 切片 · golang · Slices · 迭代器 · Go 1.23 · 迭代器 slices.Chunk Go slices.Chunk 切片分组 尾块
slices.Chunk 从 Go 1.23 起把切片分成连续的小段并返回迭代器。本文从一次批处理误改原切片的故障入手,说明尾块、容量裁剪、n 参数和遍历期间修改的边界,给出可验证的安全写法。150 收藏 -
Golang · Go问答 | 4天前 | 并发 · golang · 泛型 · 迭代器 · Go 1.23 · 资源释放 Stop Go iter.Pull2 iter.Seq2 双值迭代器 next
Go 的 iter.Pull2 把 Seq2 转成逐项读取的 next/stop 函数,适合需要手动控制消费节奏的场景。本文用键值迭代器说明 next 的结束判断、提前停止时的资源释放、panic 传播与并发边界,并给出可运行的安全写法。330 收藏 -
用 netip.Prefix.Contains 判断 IPv4、IPv6 网段归属,重点核对地址族、Masked 规范化和边界测试,避免把字符串比较或映射地址混进访问控制。432 收藏 -
用一个可运行的 Go 示例说明 time.Ticker.Reset 的重置语义、旧节拍判断、Stop 生命周期与并发读取边界,避免调度周期切换时误处理旧事件。204 收藏 -
bytes.Buffer.Reset 会清空可读数据,却保留底层存储。本文用容量、切片别名和并发边界说明复用何时有益、何时会让大块内存长期驻留。334 收藏 -
Go slog.HandlerOptions.AddSource 会让 TextHandler 或 JSONHandler 把日志调用点写入 source 字段,但它需要计算调用栈位置。本文用一个可运行示例说明 source 的来源、包装函数对定位的影响、性能成本与脱敏边界。235 收藏 -
用 Go log/slog 的 WithAttrs 固定请求上下文,理解属性快照、WithGroup 分组继承和重复键的输出边界,并用一个可运行示例核对结果。122 收藏 -
Go slog.Logger.With 会返回带属性的新 Logger,不会改写原 Logger。本文用并发请求和测试场景说明共享字段污染的成因、检查方法、隔离写法与验收边界。473 收藏 -
以一个订单接口为例,拆开 Go 1.27 encoding/json/v2 的迁移步骤,核对字段标签、旧 JSON 兼容性、测试策略与可回滚边界。426 收藏 -
用一个可复现的小例子拆开 strings.CutPrefix 与 HasPrefix 加切片的差别,重点核对 found 返回值、空前缀、相同前缀和 UTF-8 字符边界。338 收藏 -
用 Go 的 io.SectionReader 读取文件片段时,EOF 到底代表成功还是数据不足?本文从偏移量、剩余长度和 ReadAt 行为入手,给出一段可复查的判断代码。342 收藏