Go教程技术文章
-
Go 上传接口应在首次读取前包装 MaxBytesReader,并识别 MaxBytesError 返回 413。通过原始正文示例说明 ContentLength、完整读取、multipart 内存阈值、临时文件清理及单文件限制的区别。312 收藏 -
用 Go http.Client、Transport 和 context 拆分连接、TLS、响应头与整体请求超时,配合错误定位和连接池清单完成可维护配置。371 收藏 -
Go HTTP 客户端是否复用连接,关键在于共享 Transport、正确处理 Response.Body,并避免在每次请求中主动关闭 keep-alive。本文给出最小写法、连接池配置和 httptrace 排查方法。409 收藏 -
Go 循环里反复调用 time.After 是否需要改成 Timer?本文按单次超时、可复用等待和固定周期三种工作流给出选择,并说明 Go 1.23 之后的计时器回收与旧版本兼容写法。291 收藏 -
Go 的 time.Time JSON 默认使用 RFC3339 字符串并保留偏移量,但不会保留 IANA Location 名称。本文拆开瞬时点、显示时区和接口协议,说明 UTC、ParseInLocation 以及显式时区字段的选择。371 收藏 -
Go encoding/json.Encoder.Encode 会省略 JSON 内部无意义空白,但每次编码后固定追加一个换行。本文按单体接口、连续 JSON 流和可读调试三种场景,说明 Marshal、Encoder、TrimSuffix 与 SetIndent 的选择。352 收藏 -
用一个消息分发小工具演示 Go RawMessage:先读 kind,再把 payload 解析成通知对象或标签数组,并处理缺失、null、未知类型和输入大小限制。246 收藏 -
Go 的 encoding/json 没有给某个字段单独绑定 Reader 的接口。本文用自定义 UnmarshalJSON 检查字段字节数,再在 HTTP 入口限制整个请求体,说明字段超限、请求体超限、语法错误和类型错误的处理边界。436 收藏 -
Go bufio.Reader 读取协议行时,ReadString 和 ReadBytes 会保留分隔符,ReadLine 会去掉行尾,ReadSlice 还涉及缓冲区生命周期。本文从排查现象出发,给出保留 LF、CRLF 和自定义分隔符的写法。501 收藏 -
使用 Go encoding/csv 正确读取带引号的多行字段,掌握 FieldsPerRecord、LazyQuotes 与 ParseError 的边界。369 收藏 -
Go Scanner 默认 token 缓冲约为 64 KiB,超长日志行会让 Scan 停止。本文说明如何在首次 Scan 前设置 Buffer、如何处理 Err,以及何时改用 bufio.Reader。266 收藏 -
Go 的随机定位能力不是所有 Reader 都具备。本文用 io.Seeker 和 ReadSeeker 讲清接口断言、SeekStart/SeekCurrent/SeekEnd、返回偏移、越界与资源关闭边界,并给出不支持定位时的降级策略。355 收藏 -
用 Go time.Time.AppendFormat 把时间文本追加到已有 []byte 缓冲区,说明返回值、循环复用容量、布局时区和基准判断边界。155 收藏 -
Go bytes.Buffer 的读写状态混乱,通常来自把 unread 区域、写入追加和 Bytes 返回的别名混在一起。本文用 Len、Cap、Available 和最小代码示例说明如何分离读写阶段、处理别名、复用缓冲区并定位 EOF。123 收藏 -
本文用 Go 1.23 的 iter.Seq 和 iter.Seq2 讲清 range over func 的回调迭代器接入方式,覆盖 yield 停止信号、资源清理、Seq2 与旧版本兼容边界。117 收藏