Go语言技术文章
-
Golang · Go问答 | 2天前 | net/http · Go问答 · ReadTimeout ReadHeaderTimeout Go HTTP 超时 http.Server 超时配置 Go 请求头超时
Go 的 HeaderTimeout 实际对应 http.Server.ReadHeaderTimeout。本文用一组 http.Server 配置说明如何把请求头、完整请求读取、响应写出和 keep-alive 空闲预算分开设置,并指出两个读取超时不相加的边界。266 收藏 -
Go 限制上传读取长度时,不要只相信 Content-Length,也不要直接 io.ReadAll。本文用 io.LimitReader 暴露 maxBytes+1 字节,再配合 io.Copy 流式写入临时目标,区分正常文件、超限文件和读取失败。123 收藏 -
Go 更新接口中,缺失字段、JSON null 和空字符串不是同一种含义。本文用 json.Decoder 与 json.RawMessage 保留字段存在性,再映射为可校验的三态结构,避免 PATCH 请求误覆盖数据。293 收藏 -
Golang · Go教程 | 2天前 | Go教程 · encoding/json · Go encoding/json json.RawMessage json.Decoder 未知字段 兼容升级
围绕 Go json.Decoder 的结构体解码边界,说明如何用默认宽松解码兼容新增字段,再用 json.RawMessage 保留未知字段,并按场景切换严格校验。468 收藏 -
Go json.Decoder 将 JSON 解码到 interface{} 时,数字默认会变成 float64。本文用 UseNumber 保留 json.Number,再按业务需要转换为 int64、float64 或字符串,并比较结构体、动态 map 与 RawMessage 的适用边界。474 收藏 -
Go json.Decoder 的 Token 会逐个返回 JSON token。本文用 json.Delim 和深度计数识别对象、数组的嵌套边界,并说明对象字段、数组元素、EOF 与畸形输入的处理节奏。198 收藏 -
Go 的 JSON 结构体解码默认会忽略未知字段。本文用 json.Decoder 的 DisallowUnknownFields 配置严格检查,并说明兼容旧客户端、区分类型错误与未知字段错误的落地方法。373 收藏 -
用 Go json.Decoder 配合 Token、More 和 Decode 逐项处理大型 JSON 数组,说明不保存全量切片时的内存边界、数字精度和异常处理取舍。476 收藏 -
Go bufio.Reader 的 UnreadByte 只能回退最近一次成功读取的一个字节;Peek、Discard 和 WriteTo 不会建立可回退状态,回退成功后也不能再次调用。把试探读取封装为 ReadByte、判断、必要时单次回退的连续协议,可避免缓冲位置错乱。245 收藏 -
Golang · Go教程 | 2天前 | 文件处理 · 错误处理 · Go教程 · FieldsPerRecord ParseError Go encoding/csv CSV注释行 csv.Reader.Comment
Go encoding/csv 的 Reader.Comment 可以忽略行首直接出现注释字符的整行内容,再配合逐条 Read、FieldsPerRecord 和 ParseError 处理,把注释行、空行、有效记录与格式异常分开。107 收藏 -
Go bufio.Reader 处理超长行时,关键是识别 ReadLine 的 isPrefix 语义并复制拼接片段;普通按行读取可用 ReadString 或 ReadBytes,同时设置单行大小上限,避免把缓冲片段误当成完整记录。107 收藏 -
通过 encoding/csv.Reader 的 ReuseRecord 复用字段切片,介绍流式 CSV 读取中的即时处理、表头跳过、记录复制和分配基准边界,避免把可复用切片错误地交给异步任务或长期缓存。346 收藏 -
用 bufio.Reader.Peek 预读固定长度协议头时,读取位置不会前移;继续使用同一个 Reader 消费正文即可。文章同时给出复制预读字节、处理 ErrBufferFull 与 io.EOF 的边界方案。478 收藏 -
Go encoding/csv 读取 CSV 时,应先消费并验证表头,再用 FieldsPerRecord 固定数据行列数。本文给出跳过表头、识别 ErrFieldCount 与 ParseError、在入库前完成结构校验的实现方法。259 收藏 -
Scanner.Buffer 并不是把 token 变成无限大。Go 扫描长行时还要考虑 max、初始 cap、换行符空间、Buffer 调用时机和自定义 Split,本文给出排查顺序与 Reader 替代方案。383 收藏