Go语言技术文章
-
Go Webhook 先验签再解析却得到 EOF,通常不是 JSON 有问题,而是 r.Body 已被提前读完。用单一读取边界、长度限制和常量时间比较,把验签与业务解析放回同一条可信数据路径。493 收藏 -
Go 1.24 的 os.Root 和 os.OpenInRoot 如何把不可信文件名限制在指定目录内,本文用最小代码说明路径穿越、符号链接与 Close 的边界。493 收藏 -
Golang · Go教程 | 2星期前 | 部署 · embed · 模板 · Go教程 · 文件系统 · Go 静态资源 go:embed embed.FS fs.ValidPath template.ParseFS
把 HTML 模板和静态资源随 Go 二进制发布时,embed.FS 能提供只读文件树,但路径仍需遵守 fs.ValidPath 规则。本文从 go:embed、template.ParseFS 到运行时读取,说明目录布局、错误分支和部署验收。493 收藏 -
Go 的 URL.Path 保存解码后的路径,RawPath 只用于保留有效的原始编码提示;如果把已编码字符串直接放进 Path,URL.String 或 HTTP 客户端会再次转义百分号,形成 %252F。493 收藏 -
Go 的 archive/zip 不把操作系统路径直接当作 ZIP 路径使用。本文从相对路径、正斜杠、目录尾斜杠和 Writer.Close 四个边界出发,写一个可复用的 ZIP 构建示例,避免目录条目错位、穿越路径和重复名称。493 收藏 -
Go 的 O_APPEND 负责把写入定位到文件末尾,O_TRUNC 则在打开可写文件时清空已有内容。本文用一个小工具拆解两者组合,给出覆盖写、追加写和安全新建的选择方法。493 收藏 -
Golang · Go教程 | 20小时前 | HTTP · 文件上传 · Go教程 · mime/multipart · 文件上传 Go multipart/form-data mime/multipart 请求体限制
Go 控制 multipart 请求体积不能只调大或调小 maxMemory。本文用 MaxBytesReader 限制总 body,用 ParseMultipartForm 管理解析内存,再用 MultipartReader 和 LimitReader 控制单个 part,补上数量、临时文件和错误处理边界。493 收藏 -
deferclose 不是 Go 内置函数,通常指用 defer 安排 Close。本文解释 defer 的后进先出顺序、循环里的作用域,以及文件和 sql.Rows 的关闭错误如何处理。493 收藏 -
Go container/list 删除异常通常不是链表坏了,而是把 Value 当成 Element、节点来自另一条 List,或遍历时没有先保存 Next。本文按这三类现象给出排查和回归清单。493 收藏 -
io.SectionReader 把底层 ReaderAt 限制在一段区间内,ReadAt 每次按给定偏移读取且不共享当前位置。本文用短代码拆开偏移换算、边界错误和并发复用条件。492 收藏 -
Go 的 http.Transport.Clone 会复制 Transport 配置,但 TLSClientConfig 也有自己的复制边界。本文用一个双客户端场景说明修改克隆对象是否影响原对象,以及并发使用 Transport 时应避开的写法。492 收藏 -
Go 的 net/url.URL.Redacted 会像 URL.String 一样重组地址,但只把 User 中的密码替换成 xxxxx。本文用可运行示例拆开 String、Redacted、Password 的边界,避免把脱敏字符串误当作请求地址或以为查询参数也会自动隐藏。492 收藏 -
解释 Go 1.24 runtime.AddCleanup 的生命周期语义,重点说明 Cleanup 句柄、Stop、KeepAlive 与资源对象可达性之间的关系,并给出可验证的最小示例。492 收藏 -
Go 里只拆一次字符串时优先考虑 strings.Cut;需要保留全部片段或处理空字段时使用 strings.Split。本文用请求头和配置值的例子说明两者的返回值、边界与选择规则。492 收藏 -
Go Timer.Reset 前处理旧事件的原因、Stop 与非阻塞 drain 的兼容写法,以及 Go 1.23 后同步定时器通道带来的版本边界。492 收藏