Go教程技术文章
-
Go slices.Chunk 会把分组切片的容量裁到长度,但各组仍引用原底层数组。本文说明何时直接消费、何时 slices.Clone,以及指针元素和 Collect 的内存边界。276 收藏 -
Go 1.23 引入的 iter.Seq 让 slices.Chunk 可以惰性提供批次,slices.Collect 再把序列接收为可索引切片。本文说明空序列、尾批次和 slices.Clone 的数据所有权边界。144 收藏 -
Go 1.23 的 slices.Chunk 能按固定上限惰性产出连续子切片。本文用批量写入场景说明最后一组、空输入、非法大小、错误返回和底层数组共享,并给出可观察的工程封装。229 收藏 -
Go 的 map 与 maps.Keys 都不保证遍历顺序。本文给出 slices.Sorted(maps.Keys(m)) 的最小写法,说明默认升序、自定义比较器、稳定输出键值对、空 map、并发与性能边界。294 收藏 -
Go 的 maps.Insert 可以把 iter.Seq2 键值流写入目标 map。本文从 maps.All、slices.All 和自定义生成器三个来源说明合并写法,并梳理重复键覆盖、惰性执行、空流与遍历顺序边界。387 收藏 -
maps.Collect 可把 iter.Seq2 的键值对收集到一个新 map 中;重复键会按迭代器产生顺序由后值覆盖前值。本文用记录切片演示重建去重字典,并给出首值保留、版本优先和冲突检测写法。406 收藏 -
把已有的 Go 推送式回调封装为 iter.Seq[T],让调用方用 range 消费,并正确处理提前停止、资源清理和单次迭代边界。417 收藏 -
基于 Go 1.23 的 iter.Seq2 实现通用 Filter2 与 Map2,组合 maps.All 和 maps.Collect 处理键值对,并说明 yield 提前停止、遍历顺序、可比较键与键冲突等工程边界。467 收藏 -
用 Go iter.Seq 封装数据库 keyset 分页,把查询延迟到遍历发生时,并在提前停止、扫描错误和上下文取消时正确结束查询与释放 sql.Rows。398 收藏 -
用 Go unique.Handle 把规范化后的 HTTP 方法与路径组合成可比较身份,演示并发路由注册中的去重方式与适用边界。107 收藏 -
本文用完整 Go 实例演示如何规范化切片与映射、生成无歧义字符串键,并借助 unique.Handle 为不可比较结构建立稳定身份。276 收藏 -
Go 1.23 引入的 unique.Handle 可以规范化重复的可比较配置值。本文用配置键示例说明 Make、Handle 比较、Value 取值和句柄回收边界。258 收藏 -
Go 的 weak.Pointer 不会阻止对象回收,但 finalizer 会临时复活对象。本文说明旧弱指针为何在 finalizer 排队时失效,以及如何通过禁止强引用逃逸、改用 runtime.AddCleanup、按缓存未命中重建对象来消除复活风险。483 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
介绍 Go weak.Pointer 的可达性语义,并用 weak.Make、Value、互斥锁与惰性清理实现不延长对象生命周期的并发安全索引。242 收藏