-
本文说明如何用 Go httptrace.TLSHandshakeDone 记录 TLS 握手成功或失败,区分连接复用、握手状态与 HTTP 请求结果,并处理回调并发和敏感日志边界。
-
TCP 是字节流,单次 Read 不保证拿到完整网络帧。本文用 io.ReadFull 读取固定帧头和帧体,结合 binary.BigEndian 解析长度,并说明 EOF、UnexpectedEOF、超长帧和持续连接循环的处理边界。
-
Go encoding/csv 可以用 Reader.Comment 忽略指定格式的注释行,连续分隔符产生的空字段仍会保留为字符串空值。本文给出逐条读取、字段数约束、空白处理和解析错误的生产写法。
-
Go bufio.Reader 读取长记录时,使用 ReadBytes 处理单字节分隔符与 EOF 尾部数据;需要业务长度上限时,用 ReadSlice 分片复制并在追加前限制累计字节数。
-
Go 的 os.ReadFile 会把完整文件返回为 []byte。本文从内存边界出发,说明什么时候继续使用它,什么时候改用 os.Open、io.Copy、io.LimitReader 或有界逐行读取。
-
Go os.Geteuid 返回当前进程的有效用户 ID。本文用一个跨平台示例区分有效 UID、真实 UID 与有效组 ID,说明 Unix 与 Windows 的返回差异,并解释为什么它不能单独充当权限授权依据。
-
Go token.File.Offset 用于把文件内的 token.Pos 转回从 0 开始的字节偏移。本文从 FileSet、File.Pos 与 File.Offset 的关系讲起,结合 AST 位置、NoPos、越界位置和 UTF-8 字节列,给出适合生产诊断与源码工具的边界写法。
-
Go 的 go/format.Node 可以把 AST 节点按 canonical gofmt 风格写入 io.Writer。本文从 parser.ParseFile 开始,说明 FileSet、节点范围、错误处理,以及 Node 与 Source 的取舍。
-
Go ast.FileExports 会原地裁剪 ast.File,只保留导出的顶层声明,并继续清理导出类型中的非导出字段和方法。本文从源码解析开始,给出完整的裁剪与格式化示例,再说明函数体、注释、返回值和 FilterFile 的边界。
-
Go regexp.Regexp.LiteralPrefix 可以提取所有匹配都必须以它开头的字面字符串,并用 complete 区分完整正则与前缀过滤条件。本文用固定开头、字符类、分支和 HasPrefix 预过滤示例说明它的边界。
-
Go image/png.Encoder.BufferPool 可以复用 PNG 编码过程中的临时 EncoderBuffer。本文用 sync.Pool 适配 Get/Put,说明批量编码接入方式,以及并发、错误路径、超大图片和固定容量边界。
-
Go log/slog.Logger.With 会返回带公共属性的派生 logger,适合复用组件名、请求 ID 和任务 ID。本文按字段生命周期说明 With 与单条日志参数的分工,并给出原 logger、并发请求和 Handler 边界的实用写法。
-
讲清 Go database/sql.Tx.StmtContext 如何把已有的 DB 级预编译语句绑定到当前事务,并比较 Tx.PrepareContext、ExecContext 的适用场景、上下文边界和关闭时机。
-
Go database/sql/driver.Stmt.NumInput 决定 database/sql 是否能在执行前检查占位参数数量。本文用驱动实现视角说明返回非负数与 -1 的差异,帮助定位参数个数错误到底发生在预检阶段还是数据库执行阶段。
-
Go 1.21 起,crypto/tls 提供 QUICServer 与 QUICConn,负责 TLS 握手这一层,不替代 QUIC 的 UDP 拥塞控制与数据包调度。本文从资产、信任边界和事件循环出发,说明服务端如何创建连接、处理握手事件与安全关闭。