Go语言技术文章
-
Go 的 json.Indent 可以把已有 JSON 字节直接缩进追加到 bytes.Buffer,适合日志拼接、响应包装和缓冲区复用。本文按完整工作流说明参数选择、Reset、错误处理,以及它和 json.MarshalIndent 的区别。387 收藏 -
Go 的 encoding/json 默认会忽略结构体未声明的 JSON 字段。本文用 Decoder.DisallowUnknownFields 在请求边界拒绝拼写错误,说明 json 标签、嵌套结构、单文档尾部检查和可演进事件的取舍。144 收藏 -
区分 Go JSON SyntaxError.Offset、InputOffset 与底层读取量,使用 errors.As 提取语法错误,并说明中文输入、截断和连续解码的定位注意点。348 收藏 -
Go 的 JSON 接口经常有一组固定字段和一个随类型变化的 payload。本文用 json.RawMessage 保留可变字段,按类型延迟解析,并区分缺失、null、类型不匹配和整体语法错误。397 收藏 -
Go 的 url.Values 用 Add 保存重复查询参数,Encode 按键排序并保留同键值顺序。本文用可复用的代码说明 Set、Add、Get 和 RawQuery 的边界。284 收藏 -
Go net/url 解析以问号结尾但没有参数的 URL 时,要用 ForceQuery 保留空查询标记;RawQuery 只表示查询内容,不能单独区分缺少问号和空查询。147 收藏 -
用 Go 标准库 http.Flusher 实现分片响应刷新,说明能力判断、写入顺序、测试方式,以及包装器和代理缓冲的边界。161 收藏 -
用 Go 的 http.Pusher 接口断言和 Push 返回值判断 HTTP/2 服务端推送能力,并为 HTTP/1.1、客户端禁用推送和中间层降级保留普通响应路径。461 收藏 -
Go HTTP 处理器切换到原始连接时,应先检查 Hijacker 能力,再接收 net.Conn 与 bufio.ReadWriter,并明确接管后的期限、缓冲、Request.Body 和关闭责任。218 收藏 -
Go Server.ConnState 可统计连接当前状态,但不能替代请求并发数。通过连接状态表、互斥锁和快照示例,解释终态清理、HTTP/2 口径及采集请求对统计的影响。194 收藏 -
本文用 Go 标准库说明 Server.ConnContext 与 Request.Context 的关系,给出连接级信息注入、处理器读取、连接复用和请求取消的最小写法与边界。106 收藏 -
Golang · Go教程 | 8小时前 | Context · Go教程 · net/http · Go context.Context ErrHandlerTimeout http.TimeoutHandler HTTP 处理器超时
Go 标准库的 http.TimeoutHandler 可以为单个 HTTP 处理器设置时间边界,超时向客户端返回 503。本文说明最小包装方式、请求上下文取消、响应缓冲,以及它与 Server 超时配置和流式处理的边界。195 收藏 -
Golang · Go教程 | 8小时前 | HTTP · go · 服务端 · Go net/http http.MaxBytesReader http.MaxBytesError HTTP 413
Go 服务端限制请求体不能只看 Content-Length。本文用 http.MaxBytesReader 把上限放在读取入口,通过 errors.As 识别 *http.MaxBytesError,并将超限请求稳定转换为 413,同时说明分块请求、MaxBytesHandler 和提前拒绝的边界。251 收藏 -
用 Go 的 httptrace.ClientTrace 记录 DNS、连接、TLS、写请求和响应首字节时间,区分连接复用与新建连接,定位一次 HTTP 请求到底慢在哪个阶段。352 收藏 -
用 httputil.DumpRequestOut 导出 Go 客户端请求的脱敏元数据视图,隔离 URL、Header 和共享 Body,说明离线测试、敏感字段处理与真实传输的差异,全程无需读取业务响应。264 收藏