Go教程技术文章
-
整理并发治理上线前必须确认的 context、限流、连接池、降级和监控事项。357 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 收成新切片,但空序列返回 nil,消费过程也只发生一次。本文用过滤、提前停止和容量检查说明它的语义边界与使用方式。357 收藏 -
Go 1.24 为 testing.T 增加 Context 方法。本文用可运行示例说明测试上下文何时取消、如何配合 Cleanup 管理资源,以及并发子测试中的边界。356 收藏 -
Golang · Go教程 | 1星期前 | golang · 随机数 · 接口设计 · 安全编程 · 令牌 · Go crypto/rand 随机令牌 base64.RawURLEncoding 过期校验
Go 的 crypto/rand 适合生成短期一次性令牌,但随机字节数、URL 安全编码和过期校验必须一起设计。本文用一个短期下载令牌示例说明熵预算、存储字段、校验顺序和常见误区。356 收藏 -
Go HTTP 接口遇到大 JSON 请求时,单靠解析失败并不能限制网络读取量。本文用一个批量导入接口的故障现场,说明 http.MaxBytesReader、413 响应、请求体关闭和回归检查如何配合,避免内存上涨与连接复用异常。355 收藏 -
time.Ticker.Stop 之后是否还能从 C 通道读到一次事件,取决于 Go 版本、go.mod 语义和退出代码的写法。本文用一个定时刷新任务拆解 Stop 不关闭通道、select 退出、Go 1.23 同步 ticker 通道以及旧版本兼容边界。355 收藏 -
Golang · Go教程 | 1个月前 | go · net/url · url · HTTP客户端 · 路径转义 · Go教程 url.JoinPath PathEscape RawPath URL拼接
Go 的 url.JoinPath 会清理路径中的 ./ 和 ../,并重新处理斜杠;它适合拼接已分段的 URL 路径,但不能替代 PathEscape,也不应把整段用户输入直接当作一个路径片段。本文用文件名、RawPath 和查询参数案例讲清边界。354 收藏 -
FindAllStringSubmatchIndex 返回的是整段匹配和每个捕获组的字节边界,未参与匹配的组用 -1 标记。本文用 Go 示例拆开索引数组的排列方式,并给出安全切片与 UTF-8 文本处理方法。354 收藏 -
runtime.KeepAlive 的作用不是阻止 GC,而是把对象的可达性延长到指定调用点。本文用外部资源句柄的最小例子说明终结器为什么可能过早运行、KeepAlive 应该放在哪里,以及如何用资源关闭状态验证调用顺序。353 收藏 -
Golang · Go教程 | 1个月前 | 单元测试 · 错误处理 · Go教程 · errors.Join · errors.Is · errors.Is Go错误处理 Go教程 errors.Join 多错误返回 批量校验
Go 里遇到批量校验、批量关闭资源、批量处理任务时,不必只返回第一个错误。errors.Join 可以把多个 error 合成一个 error,同时保留 errors.Is、errors.As 的匹配能力,并且对 nil 有明确兼容规则。352 收藏 -
用 Go 设计一套可长期演进的 API 错误响应:统一错误码、稳定字段、请求追踪和兼容迁移一次讲清。352 收藏 -
Go 的 log/slog 会先通过 Logger.Enabled 和 Handler.Enabled 判断日志级别,再决定是否构造记录并交给 Handler.Handle。本文用可运行示例拆开这条调用链,说明昂贵属性计算该放在哪里,以及如何用测试确认过滤边界。352 收藏 -
配置 http.Client 和 Transport 超时,避免下游慢响应占满资源。351 收藏 -
Go 服务调用不稳定依赖时,重试循环里反复使用 time.After 容易留下不可控的定时器分配,固定退避也会让请求集中重试。本文用可取消的 timer.Reset 写一个带上限、抖动和结果核对的重试器。351 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。351 收藏