-
Go json.Decoder 没有单次读取字节数设置。通过 LimitReader 的加一字节预算区分超限,检查尾随内容,并结合 MaxBytesReader 返回明确的HTTP错误。
-
用 Go 的 json.Decoder 连续读取多个 JSON 对象,区分 io.EOF 正常结束与格式、类型错误,并给出文件和 HTTP Reader 的接入写法。
-
Go 解析 CSV 时,record 下标只能说明字段在当前切片中的位置,不能直接定位原始文件。本文演示如何在 Read 成功后使用 encoding/csv.Reader.FieldPos 获得字段起始行号和字节列号,并结合 ParseError、InputOffset 和下标边界生成可排查的错误信息。
-
Go 的 filepath.ToSlash 只负责把当前系统路径分隔符转换成斜杠,适合生成跨平台资源键、归档条目和 URL 风格路径。本文用一个资源清单场景拆开 ToSlash、Clean、path 与 PathEscape 的边界。
-
Go 使用 encoding/csv 读取 CSV 时,不要把业务字段写死在 record[0]、record[1] 上。本文从列顺序变化的现象出发,演示如何读取表头、建立列名映射、按列名安全取值,并处理缺失表头、重复表头和记录列数不足等边界。
-
使用 Go net/url 修改查询参数时,直接操作 URL.Query 和 RawQuery,避免重建路径导致 %2F 等编码边界发生变化。本文从最小写法、字段分工、重复参数和完整示例说明可靠做法。
-
Go log/slog 可以在 Handler 层设置最低日志级别:用 HandlerOptions.Level 固定过滤边界,用 LevelVar 在排障窗口动态调级,再用 Logger.Enabled 避免低级别日志触发昂贵字段计算。本文围绕生产配置、审计边界和发布前复查给出可复用写法。
-
Go log/slog 可以通过 HandlerOptions.ReplaceAttr 统一删除或改写 time、source 等内置字段。本文说明 groups 的层级边界,并用 TextHandler 与 JSONHandler 解释稳定输出方案。
-
通过显式提取 Context 中的请求标识并用 Logger.With 派生请求日志器,为多条 slog 日志复用上下文字段。提供完整 Go 示例,解释 InfoContext、全局默认日志器、字段缺失与重复键的边界。
-
Go database/sql 事务最容易漏掉的是提前返回路径:某个 SQL、业务校验或 context 取消后,如果没有统一 Rollback,事务就可能长期占用连接或留下不完整的控制流。本文用 defer、panic 保护和 BeginTx context 封装一个只在成功出口 Commit 的事务 helper,并用路径指标检查覆盖范围。
-
Rows.ColumnTypes 可以在不写死字段结构的情况下读取查询结果的列名、数据库类型、扫描类型以及驱动支持的长度、可空性和小数精度。本文给出动态扫描写法,并说明 ok 标志、驱动差异和资源生命周期。
-
sql.RawBytes 引用的是数据库拥有的内存,Scan 后只能使用到下一次 Next、Scan 或 Close。本文说明如何在当前行立即消费,以及什么时候用 append 复制成独立字节切片,避免跨行缓存和异步处理拿到失效数据。
-
reflect.Value.IsValid 判断反射值是否存在,reflect.Value.IsZero 判断有效值是否等于其类型零值。本文用 nil 接口、带类型 nil 指针和 reflect.Zero 拆开两者边界,并给出安全调用顺序。
-
Go reflect 中,CanAddr 只回答能否取得地址,CanSet 才进一步回答能否修改。本文用普通值、指针 Elem、切片元素和结构字段说明可寻址与可设置的边界。
-
当字段集合只有在运行时才能确定时,可以用 reflect.StructOf 根据 StructField 描述构造匿名结构体,再通过 reflect.New 创建可写实例并交给 JSON 编解码。本文按排障手册拆解字段、Value 和边界。