-
Go hash/crc64 同时提供 ISO 与 ECMA 两种预定义多项式。本文说明怎样按既有协议选择 crc64.MakeTable,如何在 Checksum、New 和 Update 之间切换,并处理分块顺序、结果字节序与非密码学边界。
-
Go x/sync/errgroup.TryGo 会在并发额度未满时启动任务,额度已满时立即返回 false。本文用 SetLimit、TryGo 和 Wait 说明非阻塞提交、拒绝分支、错误回收与 Context 取消的边界。
-
Go sync.OnceValue 的初始化函数只执行一次,但如果函数 panic,返回函数后续每次调用仍会以同一个值 panic。本文用最小示例解释这一语义,并给出 recover 与重试边界。
-
用 Go iter.Pull2 消费分页 Seq2 时,空页应让生成器自然结束,消费者提前退出则必须调用 stop。本文给出 next、stop 和 defer 的组合写法,并说明空页死循环与并发调用边界。
-
Go 1.21 引入 maps 包后,配置映射可以用 maps.Equal 比较键值对;本文说明基本用法、nil 与空 map 边界,以及值为切片时如何改用 maps.EqualFunc。
-
Go maps.Collect 可把键值迭代器收集成新 map。以商品库存索引说明业务键清洗、重复覆盖、查询顺序与切片引用共享,并给出需要返回错误时的显式循环方案。
-
Go 的 maps.Clone 不只是复制键值,它还保留源 map 的 nil 语义。本文用最小示例区分 nil map 与非 nil 空 map,说明 Clone 后的写入边界、浅拷贝限制,以及序列化和默认值处理时的工程取舍。
-
Go encoding/hex.Dumper 可以把写入的字节流转换成 hexdump -C 风格的十六进制转储。本文从日志排查场景出发,说明如何接入 io.Writer、为什么必须处理 Close,以及如何区分写入失败和转储收尾边界。
-
Go net/http 的 MaxBytesReader 可以限制请求体读取大小,但超限时不能靠字符串比较来判断。本文用 errors.As 识别 *http.MaxBytesError,说明 Limit 字段、413 响应、普通读取错误和关闭顺序的处理边界。
-
Go 结构体切片不能直接依赖 slices.Index 做字段条件查询,slices.IndexFunc 更适合表达按 ID、状态或组合条件查找第一条记录。本文用完整示例说明回调、-1 边界、重复匹配和 map 选型。
-
Go text/template.Option 的 missingkey 配置决定模板访问缺失 map 键时是保留默认结果、写入零值,还是让 Execute 返回错误。本文用最小示例对比三种行为,并给出升级模板调用方时的回归清单。
-
Go encoding/hex.NewDecoder 适合把十六进制字符流转换为字节流。本文说明分块读取、奇数长度输入、非法字符和 io.ErrUnexpectedEOF 的区别,帮助你正确收尾而不是把不完整数据误判成正常结束。
-
Go strconv.AppendQuote 会把字符串追加成带双引号的 Go 字符串字面量。本文用日志字段示例说明如何复用 []byte 缓冲区、处理引号和控制字符,并比较 AppendQuote、Quote、QuoteToASCII 与 AppendQuoteRune 的使用边界。
-
Go 通过 reflect.Value 反射写入整数时,不能只看输入是不是 int64,还要判断目标 Value 的 Kind 和可表示范围。本文说明 OverflowInt 的判断对象、整数边界、错误 Kind 处理和写入前检查方式。
-
Go 字符串按字节截断时可能切断中文或表情的 UTF-8 编码。本文用 unicode/utf8.ValidString、range 和 RuneLen 实现按字节上限保留完整 rune,并说明非法输入、零值上限与字符数限制的区别。