Go语言技术文章
-
json.Decoder.Decode 成功一次,不代表请求体只包含一个 JSON 文档。本文用 Token、第二次 Decode 和 io.EOF 判定尾随数据,拆解单文档接口的校验边界与常见误区。494 收藏 -
io/fs.ValidPath 专门判断文件系统接口使用的相对路径是否合规。本文从点号、斜杠、空路径和归档条目四个边界入手,给出可运行的校验代码以及如何避免把合法嵌套路径误判成危险输入。408 收藏 -
Go 的 html/template.ParseFS 可以直接从 embed.FS 加载模板,但嵌入路径、模板匹配和执行错误各有边界。本文用一个可运行的页面渲染例子拆开加载、执行、错误定位与发布验收。417 收藏 -
Go 的 os.ReadDir 返回 DirEntry,不必立刻为每个目录项读取完整 FileInfo。本文拆开 Type、IsDir、Info 的成本和错误边界,说明排序语义、符号链接判断以及适合目录扫描的最小写法。325 收藏 -
Go 标准库 flag 默认把一个参数当成一个值。本文用自定义 flag.Value 收集重复参数,说明切片初始化、空值校验、错误提示和最终读取的边界。259 收藏 -
用 Go 的 multipart.Reader 逐段接收大文件,把请求体写入临时文件并在边界解析或磁盘失败时可靠清理,配套可运行的上传接口、大小限制与验收方法。340 收藏 -
unsafe.StringData 可以让 Go 程序拿到字符串底层字节的指针,但这不等于获得了一块可长期持有、可修改的内存。本文用可运行的小实验区分指针有效期、字符串生命周期和只读边界,给出适合零拷贝场景的使用检查。448 收藏 -
Go slog 适合结构化记录请求和业务事件,但把请求对象直接写入日志很容易带出手机号、令牌或地址。本文用字段白名单、LogValuer 和审计分层,搭一套可检查、可回退的日志边界。410 收藏 -
Golang · Go教程 | 6天前 | JSON · go · 后端开发 · 接口设计 · Go encoding/json JSON接口 DisallowUnknownFields Decoder
Go 的 JSON 接口要不要拒绝未知字段,关键不在于开关本身,而在于客户端兼容边界。本文用 Decoder.DisallowUnknownFields 拆解严格校验、错误定位、灰度发布和回滚策略。439 收藏 -
用一个可复现的 Go 示例拆清 sync.Pool 的复用边界、GC 后对象消失的原因,以及它和真正缓存之间的区别,最后给出可验证的使用清单。156 收藏 -
线上接口延迟升高时,goroutine 画像能帮助定位到底是 channel、锁还是外部调用在等待。本文从可见症状开始,结合 runtime/pprof 的 goroutine 采样、状态分类和可复现验证,拆出一条不靠猜的排查路径。263 收藏 -
Golang · Go教程 | 6天前 | golang · 文件上传 · 性能排查 · net/http · 安全边界 · 文件上传 Go 连接复用 http.MaxBytesReader 请求体限制
Go 的文件上传接口不能只依赖前端限制。本文用 net/http 的 http.MaxBytesReader 包住请求体,拆解限制位置、超限后的 413 响应、读取顺序与连接复用边界,并给出可运行的处理函数和验收清单。327 收藏 -
用 Go net/http 实现一个可取消的 SSE 心跳服务,串起 Flusher、Request.Context、断线检测和资源回收,重点看连接结束后如何让后台工作及时停下来。198 收藏 -
用 Go 的 io.Pipe 把压缩器输出和 HTTP 请求串成一条流,说明读写端协作、错误传递、请求结束和可复查验证的关键边界。485 收藏 -
Go 1.24 的 strings.SplitSeq 返回一次性迭代器,适合只需逐项处理而不必保留整个字符串切片的场景。本文用大文本解析示例说明它与 strings.Split 的语义差异、空字段边界、内存取舍和兼容写法。363 收藏