-
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,并说明非法输入、零值上限与字符数限制的区别。
-
Go regexp.Regexp.String 返回编译时使用的正则表达式文本,适合做配置回显和诊断日志。本文对比 String、MatchString、FindString 与 MarshalText 的职责,并说明空指针、动态规则和敏感日志的使用边界。
-
Go 1.25 为 sync.WaitGroup 增加了 Go 方法,把任务计数、goroutine 启动和完成收口组合起来。本文用一个固定任务集合说明 WaitGroup.Go 的最小写法、Wait 调用时机、panic 边界,以及什么时候仍应使用 Add/Done。
-
Go 的 RawStdEncoding 是使用标准 Base64 字母表但省略等号补位的编码器。本文说明它与 StdEncoding、RawURLEncoding 的区别,给出无填充文本的编码、解码、错误处理和边界选择。
-
把配置中的超时统一写成 500ms、2s 这类带单位字符串,在 Go 程序入口解析为 time.Duration,再复用于 context、HTTP 客户端和定时任务,避免裸整数造成单位误读。
-
Go time.Time.Compare 返回 -1、0、1,适合把两个时间点的先后关系统一接入排序和状态判断。本文说明返回值、与 Before/After/Equal 的选择、排序回调以及零值和单调时钟边界。
-
Go HTTP/1 处理器默认会先消费未读请求体,再开始写响应。本文用 ResponseController.EnableFullDuplex 说明如何在同一处理器中按块读取请求并持续写出响应,以及不支持、刷新和错误处理的边界。