Go教程技术文章
-
Go 1.22 引入的 base64.Encoding.AppendEncode 会把编码结果追加到已有 dst,而不是要求调用方先单独分配输出切片。本文用请求令牌拼接场景拆开 dst 前缀、EncodedLen 容量预估、append 扩容和输入边界,给出可核对的最小写法。501 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 泛型 · 资源管理 · 迭代器 · Go教程 · 资源释放 iter.Seq range over function Go泛型迭代器 iter.Pull
Go 1.23 引入的 iter.Seq 让自定义序列可以直接配合 for range,但提前 break 与 iter.Pull 的 stop 处理决定了资源能否及时释放。本文用分页读取与筛选场景拆解 push 迭代器、pull 迭代器和停止边界。495 收藏 -
json.Decoder.Decode 成功一次,不代表请求体只包含一个 JSON 文档。本文用 Token、第二次 Decode 和 io.EOF 判定尾随数据,拆解单文档接口的校验边界与常见误区。494 收藏 -
Go 的 net/url.URL.Redacted 会像 URL.String 一样重组地址,但只把 User 中的密码替换成 xxxxx。本文用可运行示例拆开 String、Redacted、Password 的边界,避免把脱敏字符串误当作请求地址或以为查询参数也会自动隐藏。492 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 并发安全 · Go教程 · net/http · 连接复用 · Go 连接池 header http.Transport.Clone 并发客户端
Go 的 http.Transport.Clone 适合从一份稳定的连接配置派生客户端,但它不会替你合并请求级 Header,也不该被当成共享运行状态的复制器。本文从连接池、Header 隔离和并发改造三个边界拆开 Clone 的正确用法。491 收藏 -
围绕 Go 1.25 的 crypto.SignMessage 与 MessageSigner,拆解如何让签名封装同时兼容自带哈希和外部哈希的签名器,并验证回退路径与错误边界。490 收藏 -
Golang · Go教程 | 2天前 | 文件处理 · golang · 工程实践 · 路径校验 · 安全编程 · Go archive/tar 路径逃逸 解压安全 filepath.IsLocal
archive/tar 的 Header.Name 不能直接拼接到解压目录。本文从 tar 条目检查、filepath.IsLocal 与 Rel 校验入手,给出拒绝绝对路径和 .. 逃逸的 Go 示例,并补上符号链接、文件大小和失败回滚边界。489 收藏 -
Golang · Go教程 | 17小时前 | JSON · go · 接口开发 · 安全编程 · Go encoding/json DisallowUnknownFields Decoder API参数校验
Go API 接收 JSON 时,如何用 Decoder.DisallowUnknownFields 拦截拼写错误和多余字段?本文从请求解码链路出发,给出可运行示例、错误响应策略与生产验收清单。487 收藏 -
用 log/slog 的 HandlerOptions.AddSource 控制 source 字段,理解调用位置信息从哪里来、何时值得开启,以及如何在生产日志中验证它的代价。487 收藏 -
用 Go 的 io.Pipe 把压缩器输出和 HTTP 请求串成一条流,说明读写端协作、错误传递、请求结束和可复查验证的关键边界。485 收藏 -
Go 处理用户上传目录或解压目录时,os.Root 可以把文件访问限制在一个根目录内。本文从 Open、ReadFile 和相对路径校验入手,说明目录沙箱如何工作、哪些错误必须保留,以及如何验证越界路径不会被打开。483 收藏 -
用 Go io.SectionReader 把大文件的一段变成受限 Reader,弄清 NewSectionReader 的偏移、EOF 边界、Seek 行为与并发复用条件。480 收藏 -
Go 的 html/template 会按 HTML、属性、URL 和 JavaScript 上下文自动转义;template.HTML 只适合经过可信构造的片段。本文用最小示例说明安全边界、常见误区和可核验写法。480 收藏 -
用 Go 标准库 netip.Prefix.AppendTo 把 IPv4 与 IPv6 网段写入既有字节缓冲区,验证前缀长度、零值和容量边界,避免不必要的字符串分配。479 收藏 -
通过一个可复现的 slog 小实验,拆开 LogValuer、Handler.Enabled 与 Logger.Enabled 的调用顺序,说明昂贵字段怎样延迟计算,以及等级过滤能省下什么成本。479 收藏