Go语言技术文章
-
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 收藏 -
unique.Handle 的相等性遵循创建它的 T 值的 Go == 语义;只有当 T 本身是指针时,Handle 相等才可解释为指针值相等,不能泛化为任意原始对象地址相同。390 收藏 -
本文用完整 Go 实例演示如何规范化切片与映射、生成无歧义字符串键,并借助 unique.Handle 为不可比较结构建立稳定身份。276 收藏 -
说明 Go unique.Handle 的 comparable 边界,并给出含切片结构体按内容生成可比较键的安全做法与常见误区。388 收藏 -
Go 1.23 引入的 unique.Handle 可以规范化重复的可比较配置值。本文用配置键示例说明 Make、Handle 比较、Value 取值和句柄回收边界。258 收藏 -
weak.Pointer 不会让对象保持可达,但 map 中的弱键不会自动删除。本文用 Go 示例说明如何依据 Value() 返回 nil 清理失效键,并处理并发、保活和惰性扫描边界。448 收藏