Go语言技术文章
-
Go 1.23 的 slices.Chunk 能按固定上限惰性产出连续子切片。本文用批量写入场景说明最后一组、空输入、非法大小、错误返回和底层数组共享,并给出可观察的工程封装。229 收藏 -
maps.DeleteFunc 可以在遍历同一个 map 时按条件原地删除。本文说明删除未到达条目的规范语义,并给出纯谓词、稳定顺序、回调副作用和并发访问的处理边界。236 收藏 -
Go 的 map 与 maps.Keys 都不保证遍历顺序。本文给出 slices.Sorted(maps.Keys(m)) 的最小写法,说明默认升序、自定义比较器、稳定输出键值对、空 map、并发与性能边界。294 收藏 -
maps.Clone 只对 map 的键和值执行普通赋值,因此新旧 map 的顶层容器独立,但切片、指针、内层 map 等引用型值仍共享底层数据。本文通过示例说明边界,并给出切片、嵌套 map 与指针结构的深拷贝写法。118 收藏 -
Go 的 maps.Insert 可以把 iter.Seq2 键值流写入目标 map。本文从 maps.All、slices.All 和自定义生成器三个来源说明合并写法,并梳理重复键覆盖、惰性执行、空流与遍历顺序边界。387 收藏 -
maps.Equal 使用 == 比较 map 值,而 IEEE 754 NaN 与包括自身在内的任何 NaN 都不相等,因此两个相同键下都保存 NaN 的 map 也会比较失败。本文给出 EqualFunc 修复值比较的方法,并说明 NaN 键为何必须规避。295 收藏 -
maps.Collect 可把 iter.Seq2 的键值对收集到一个新 map 中;重复键会按迭代器产生顺序由后值覆盖前值。本文用记录切片演示重建去重字典,并给出首值保留、版本优先和冲突检测写法。406 收藏 -
Go 的 iter.Seq 没有 error 返回位,遍历过程中的错误应通过结果对象携带;初始化失败则直接作为外层 error 返回,pull 迭代器提前结束还要调用 stop。171 收藏 -
把已有的 Go 推送式回调封装为 iter.Seq[T],让调用方用 range 消费,并正确处理提前停止、资源清理和单次迭代边界。417 收藏 -
解释 Go 单次 iter.Seq 被重复 range 时的真实行为,对比完整消费与提前停止,并给出快照、工厂函数和 API 注释等安全设计方式。270 收藏 -
基于 Go 1.23 的 iter.Seq2 实现通用 Filter2 与 Map2,组合 maps.All 和 maps.Collect 处理键值对,并说明 yield 提前停止、遍历顺序、可比较键与键冲突等工程边界。467 收藏 -
Go 的 iter.Seq 是由 yield 返回值驱动停止的。本文解释 range 提前 break、iter.Pull 的 stop,以及自建异步生产者为何会继续运行,并给出可复查的资源回收方案。269 收藏 -
用 Go iter.Seq 封装数据库 keyset 分页,把查询延迟到遍历发生时,并在提前停止、扫描错误和上下文取消时正确结束查询与释放 sql.Rows。398 收藏 -
unique.Make 设计上不会永久保留所有失去 Handle 的规范值,但活跃 Handle 会延长生命周期,高基数长期服务还要关注弱引用清理时机与 Go 官方已知问题。本文给出适用边界、代码和监控建议。257 收藏 -
用 Go unique.Handle 把规范化后的 HTTP 方法与路径组合成可比较身份,演示并发路由注册中的去重方式与适用边界。107 收藏