Go语言技术文章
-
Go 1.27 的 encoding/json/jsontext 提供面向 JSON 语法的 Decoder 和 Token。本文从最小读取示例、对象数组边界、跳过值和 Token 生命周期四个方面说明怎样按 token 处理 JSON。271 收藏 -
Go cmp.Or 可以从多个同类型候选值中返回第一个非零值,适合表达环境变量、配置文件和代码默认值的优先级。本文拆开零值约定、comparable 类型限制、参数提前求值和配置流水线中的错误边界。216 收藏 -
Go crypto/mlkem 用 ML-KEM-768 生成密钥、封装共享秘密与解封装密文。通过原创函数示例区分公开材料和秘密材料,解释错误处理、返回顺序及身份认证边界。406 收藏 -
Go 1.24 的 runtime.AddCleanup 可以为对象注册异步清理回调。本文从资源包装场景出发,说明参数关系、回调触发条件、KeepAlive、Cleanup.Stop 以及显式 Close 的边界。304 收藏 -
Go 1.23 引入的 unique.Make 可以把可比较值规范化为 Handle。本文从最小写法、map 去重、类型约束和生命周期四个方面说明如何正确复用唯一实例。329 收藏 -
Go weak.Pointer 不会阻止对象被垃圾回收。本文用两个小例子说明 weak.Make、Value、nil 判断和 runtime.KeepAlive 的生命周期边界,并区分弱引用缓存与确定性资源释放。175 收藏 -
Go iter.Pull 把 iter.Seq 的推送式遍历转换为 next 拉取,并返回 stop 管理提前退出。本文用两个序列的并行读取说明 next、ok 和 defer stop 的职责边界。300 收藏 -
Go iter.Seq 用统一接口组合生成、筛选和转换,示例说明消费时计算、提前停止、可重入源与结果物化的取舍,避免把惰性遍历误当作缓存、快照或异步任务。377 收藏 -
strconv.ParseBool 只负责标准布尔文本,配置中的 yes/no 需要在入口处做显式兼容映射。本文说明接受范围、错误边界和一段可复用的 Go 配置解析写法。141 收藏 -
Go 1.23 起可以用 maps.Values 提取 map 的值迭代器,再按需用 slices.Collect 收集成切片或用 slices.Sorted 建立稳定顺序。本文说明直接遍历、收集、排序、重复值和旧版本兼容边界。301 收藏 -
Go maps.Keys 返回无序键迭代器;文章用原创示例区分切片收集与排序,说明空 map、旧版本替代写法,以及结构体键完整比较规则,帮助得到排列可重复的键列表。320 收藏 -
Go strings.Lines 返回一次性 iter.Seq[string],适合按行惰性遍历字符串。本文说明换行符归属、空字符串、连续换行和没有末尾换行的尾行处理,并比较它与 SplitAfter 的使用边界。187 收藏 -
Go slices.Grow 用来在批量追加前保证切片还有 n 个元素的容量空间。本文区分长度、容量和追加预算,说明为什么必须接住返回值,以及空切片、容量足够、负数参数和过大申请时的处理边界。366 收藏 -
围绕 ResponseWriter 包装导致的 http.Flusher 断言失败,说明安全断言、Unwrap 透传和 ResponseController 兜底的兼容写法。103 收藏 -
Go build -ldflags 传入带空格的 -X 参数,需要同时保留 shell 实参和 Go 内层赋值字段。本文给出完整赋值加引号的最小写法、受控构建标签示例,以及变量路径、输入范围与发布日志的检查要点。273 收藏