Go教程技术文章
-
Go archive/zip.File.Open 返回的是 io.ReadCloser。本文区分条目读取器与 ZIP 归档读取器的关闭责任,并给出单条函数、批量遍历和错误处理的安全写法。397 收藏 -
Go 使用 csv.Reader.ReuseRecord 读取 CSV 时,直接保存 Read 返回的切片可能让上一行被后续数据覆盖。本文解释底层数组复用,并给出保存前复制的安全写法。455 收藏 -
Go 的 csv.Reader.LazyQuotes 只放宽双引号语法,不会取消字段数、分隔符和记录边界检查。本文按输入形态说明哪些脏 CSV 仍会失败,并给出可定位错误的读取写法。327 收藏 -
Golang · Go教程 | 1星期前 | 文件读取 · Go教程 · Go csv.Reader Comment Go CSV 跳过注释行 encoding/csv 注释字符 csv.Reader 前导空白
Go 的 csv.Reader 可以通过 Comment 跳过以指定字符开头的整行,但前导空白会改变判定结果。本文用原创示例讲清配置方式、字段边界、错误处理与不规则 CSV 的选择策略。215 收藏 -
Go 动态解析 JSON 时,默认数字会进入 float64。使用 Decoder.UseNumber() 保留 json.Number,再按 Int64、math/big 或字符串边界转换,避免大整数静默丢失精度。454 收藏 -
Go json.RawMessage 通过标准库解码时会复制输入,但手动切片转换仍可能共享底层字节;本文说明如何在延迟解析、队列和并发边界前建立独立所有权。369 收藏 -
Go json.Decoder 默认忽略结构体未知字段,适合灰度客户端向前兼容;本文用示例说明类型错误、DisallowUnknownFields 严格入口和分阶段收紧清单。372 收藏 -
Go 1.22 及以上版本可以在 http.ServeMux 模式中同时声明请求方法和路径,本文用用户资源路由说明 GET、HEAD、POST、DELETE、PathValue、405 和 Allow 的匹配边界。217 收藏 -
Go http.Client 默认最多连续跟随 10 次重定向。本文用 CheckRedirect 和 len(via) 设置业务上限,并比较返回错误与保留最后一次 3xx 响应两种处理方式。147 收藏 -
解释 Go http.Request.Clone 为什么不能让多个请求重复读取同一份 Body,并给出受限缓存、独立 Reader 和 GetBody 重试方案。237 收藏 -
Go 的 url.Values.Encode 会按 key 排序并完成 URL 编码,但不会替你制定完整的签名协议。本文说明重复参数、特殊字符和签名字段如何纳入同一份规范化字符串。204 收藏 -
解释 Go url.ParseQuery 遇到未编码分号时返回错误的原因,区分分隔符与参数值,给出正确编码、旧协议兼容和回归检查方法。115 收藏 -
Go 的 url.URL.JoinPath 会通过 path.Join 清理路径中的连续斜杠、./ 和 ../。本文用 API 路径、PathEscape 和方案对比说明为什么双斜杠会改变,以及什么时候不该使用 JoinPath。440 收藏 -
用 ctx.Err() 判断取消状态,用 context.Cause(ctx) 读取业务原因,掌握 WithCancelCause、WithTimeoutCause 以及父子 Context 的第一次取消规则。276 收藏 -
Golang · Go教程 | 1星期前 | Context · 并发控制 · Go教程 · Go Deadline context.Context 取消信号 context.WithoutCancel
Go context.WithoutCancel 会继续沿父上下文读取 Value,但不继承取消信号、deadline、Err 和 Cause。本文用可观察的字段对照、异步收尾示例和检查清单,说明如何重新建立安全的任务退出边界。374 收藏