Go教程技术文章
-
Go unique 负责规范化可比较值,不提供 TTL、容量限制、手工失效、加载错误或命中统计。本文用服务配置场景拆分句柄层与缓存层,说明哪些需求必须继续使用业务缓存。467 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · go · slog · 日志排查 · 结构化日志 slog.Handler LogAttrs Go slog.GroupAttrs 空日志分组
Go slog.GroupAttrs 只负责构造组属性,符合契约的 Handler 会忽略没有有效属性的组。本文通过动态字段示例说明调用端条件追加、零 Attr 过滤与自定义 Handler 排查方法。455 收藏 -
Go 1.23 起可用 unique.Make 规范化可比较值。本文用重复标签对象示例说明如何保存 unique.Handle[string]、在热路径比较句柄、在输出边界取回 Value,并解释何时不该使用。255 收藏 -
docker init 能快速生成 Go 项目的 Dockerfile、compose.yaml 和 .dockerignore,但生成结果只是起点。本文按构建版本、主程序路径、端口、运行用户和敏感文件五个边界,给出一份可落地的修改清单。167 收藏 -
Go 的 slog.HandlerOptions.ReplaceAttr 会在 TextHandler 或 JSONHandler 输出前接收每个非 Group 属性。把 groups 与 Key 组合成完整路径后,可以集中执行全量替换、局部掩码或返回零 Attr 删除字段,并用缺失断言验证敏感原文没有进入日志。100 收藏 -
slog.WithGroup 应该承担稳定的命名空间,而不是替代字段命名。本文对比嵌套组、空组和自定义 Handler 的边界,给出避免 request_id、status 等属性冲突的设计方法。457 收藏 -
Go slices.SortedStableFunc 会把 iter.Seq 收集到新切片,再按比较器稳定排序;比较结果相等的元素保留原迭代顺序,空序列返回 nil。本文说明比较器写法、空结果边界,以及它与 SortStableFunc 的选择。152 收藏 -
Go 1.23 起可用 slices.Backward 按降序索引反向遍历切片,无需复制或改变元素顺序。本文给出最小写法、提前停止、索引写回、结构体值语义、空切片和旧版本兼容示例。501 收藏 -
Go 1.23 起可用 slices.Chunk 返回 iter.Seq,按固定大小惰性遍历连续子切片。本文用完整示例说明末尾短块、空输入、非法大小、容量裁剪、元素修改与批处理错误定位。487 收藏 -
maps.EqualFunc 允许 Go 比较键类型相同但值类型不同的两个 map。本文用 string 与 []byte 的例子说明比较器写法,并梳理 nil、空 map、缺失键和不可比较值的边界。284 收藏 -
maps.Keys 返回 map 键的 iter.Seq,但官方明确说明迭代顺序未指定,而且不同调用之间不保证一致。本文解释常见误区,并给出普通有序键、结构体键、测试与接口输出的稳定排序写法。304 收藏 -
Go 1.23 起,maps.Collect 可以把 iter.Seq2[K,V] 键值序列收集为新的 map。本文从 slices.All 的最小写法讲到自定义 Seq2、重复键覆盖规则,以及 maps.Collect 与 maps.Insert 的选择边界。236 收藏 -
Go 迭代器提前停止时,push 模式应在迭代器内部 defer 关闭资源并在 yield 返回 false 后立即 return;iter.Pull 模式则要在取得 next、stop 后立刻 defer stop。本文给出错误边界、包装器写法和可验证的测试清单。359 收藏 -
用 Go iter.Pull 把 iter.Seq 推送式迭代器转换成按需调用的 next 函数,说明 stop 的释放责任、提前退出和空序列边界。444 收藏 -
用 Go 1.23 的 iter.Seq2 为树形索引提供键值遍历时,可让 All 返回中序序列,并让递归 walker 把 yield=false 一路向上返回,从而支持 range break、保持封装且避免构造临时切片。199 收藏