Go语言技术文章
-
Go slices.Chunk 会把分组切片的容量裁到长度,但各组仍引用原底层数组。本文说明何时直接消费、何时 slices.Clone,以及指针元素和 Collect 的内存边界。276 收藏 -
解释 Go slices.Delete 后 len、cap、尾部零值和外部引用如何共同影响内存释放,并给出清零、Clip 与 Clone 的选择清单。158 收藏 -
Go 1.23 引入的 iter.Seq 让 slices.Chunk 可以惰性提供批次,slices.Collect 再把序列接收为可索引切片。本文说明空序列、尾批次和 slices.Clone 的数据所有权边界。144 收藏 -
Go 1.23 的 slices.Chunk 会把每个分组容量裁到长度。本文从三索引切片、底层数组共享和 append 扩容讲清设计原因,并给出修改、追加、异步留存与 Clone 的工程决策边界。363 收藏 -
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 收藏