-
httptest.NewRequest 构造的是直接交给 handler 的入站测试请求,RemoteAddr 的固定值是稳定的默认哨兵,不代表真实客户端地址。本文说明它与 target、Host、Proto、TLS 的关系,并给出覆盖字段和改用 httptest.Server 的判断方式。
-
Go context.WithCancelCause 适合把批处理中的首个取消原因沿 Context 传给调用方。本文区分 Err 与 Cause,给出批次级 worker 示例,并说明如何用稳定错误和一次派生上下文减少额外结果包装与分配。
-
Go linkname 会绕过未导出声明的封装。本文从需求、符号签名、内存布局、Go 版本、链接器、目标架构和回滚路径几个方面说明使用前必须明确的边界。
-
Go ResponseController.Hijack 需要按调用结果判断当前 ResponseWriter 是否支持连接接管。本文区分 HTTP/1.x、HTTP/2 与包装器能力,说明 ErrNotSupported 的降级处理,以及接管后 net.Conn、缓冲读写器和 Request.Body 的责任边界。
-
Go 读取 ZIP 条目大小时,应优先使用 archive/zip.FileHeader.UncompressedSize64。本文说明它与旧的 UncompressedSize 字段有什么关系,为什么 ZIP64 条目必须依赖 64 位字段,以及怎样在打开内容流前把原始大小用于配额、内存和解压边界判断。
-
Go encoding/binary.Decode 适合把固定布局的字节切片按 LittleEndian 或 BigEndian 解析到结构体。本文说明字段限制、返回字节数、缓冲区不足,以及 Decode、Read、Encode 的选择。
-
用 Go iter.Pull 把 iter.Seq 转成 next/stop 逐项读取,区分零值与结束信号,处理空输入和提前退出,并说明业务错误如何保持清晰边界。
-
本文从无时区日期被解析成 UTC 的现象出发,用 Go time.LoadLocation 和 time.ParseInLocation 完成指定时区的本地日期解析,并说明输入错误、加载失败、固定偏移和夏令时边界。
-
Go iter.Pull2 把 push 风格的 iter.Seq2 转成 next 和 stop 两个函数。本文用提前匹配、错误返回和完整消费三个场景说明为什么要 defer stop,并梳理重复 Stop、零值返回和并发调用边界。
-
Go net/url.URL 的临时分配通常来自重复 Parse、查询参数编码和最终字符串输出,而不是 URL 结构体本身。本文用可复用 URL、受控 RawQuery 和 Go 1.24+ 的 AppendBinary 组合,说明如何减少循环中的短命对象,并给出 Clone、JoinPath、String 与基准测试的取舍。
-
Go io.LimitReader 适合限制可选字段本次最多读取的字节数,但它不会自动判断字段是否完整。本文用存在标记和长度前缀示例,说明如何配合 io.ReadFull 处理字段不存在、长度超限和 io.ErrUnexpectedEOF。
-
Go slog.Logger 处理可选字段时,关键不是把空字符串或零值直接塞进日志,而是先判断字段是否存在,再条件追加 slog.Attr。本文用 LogAttrs、With、分组字段和高频日志路径说明缺失、零值、nil 的区别。
-
Go encoding/hex 的 Dumper 按 hexdump -C 形式把字节写入 io.Writer。若最后一行不足 16 字节,Close 会补齐空白、ASCII 右栏和换行;本文说明 Write、Close、错误处理以及与 hex.Dump 的选择边界。
-
TCP 是字节流,单次 Read 不保证拿到完整网络帧。本文用 io.ReadFull 读取固定帧头和帧体,结合 binary.BigEndian 解析长度,并说明 EOF、UnexpectedEOF、超长帧和持续连接循环的处理边界。
-
用 Context.Deadline 和 time.Until 计算 Go context.WithDeadline 的有效剩余时间,并区分无 deadline、提前取消、已经超时以及父 Context 更早截止等边界。