Go语言技术文章
-
bytes.Clone 返回独立的 []byte 副本,适合把复用缓冲区中的数据保存成安全快照。本文用可复现代码说明 append、切片别名和 bytes.Clone 的差异,并给出基线与边界。202 收藏 -
Go 1.27 为 math/big.Int 增加 Divide,可按 Trunc、Floor、Round、Ceil 计算商和余数。文章用负数除法与中点舍入说明四种模式、恒等式和迁移边界。202 收藏 -
循环中 defer Close 不会在本轮循环结束时执行,而是等外层函数返回,文件多时就会让文件描述符持续累积。本文用小函数或显式 Close 修复这一边界,并说明如何检查关闭错误。202 收藏 -
Go context.AfterFunc 适合在上下文取消时触发连接、临时文件等资源的兜底回收,但 stop 只解除回调关联,不等待回调结束。本文用 stop、完成信号和 sync.Once 拆解正常完成与取消竞态。202 收藏 -
用 Go log/slog 在请求边界派生带 request_id 的 logger,结合 With、WithGroup 和 LogAttrs 组织结构化字段,并说明 context、脱敏与并发复用边界。202 收藏 -
介绍 Go http.ResponseController.SetWriteDeadline 的单次响应用法,说明绝对期限、缓冲写入、Flush、ResponseWriter 包装器、ErrNotSupported 与 context、Server.WriteTimeout 的分工。202 收藏 -
ReadForm 的 maxMemory 主要约束文件内容,普通字段仍以字符串保存在内存。本文拆解其预算边界,并给出请求体、字段与临时文件的安全限制方法。202 收藏 -
Golang · Go问答 | 30分钟前 | golang · Context · 并发编程 · 超时控制 WithTimeout WithCancel Go context 取消传播 WithoutCancel
本文从停止权、时间预算和父级脱离三个维度比较 WithCancel、WithTimeout 与 WithoutCancel,解释父子取消传播、CancelFunc 回收、nil Done 风险,并给出请求后短任务的有界组合写法。202 收藏 -
Golang · Go教程 | 2个月前 | 并发 · HTTP · 性能优化 · 故障排查 · Go教程 · Go Goroutine 连接复用 pprof http.Client close Response.Body
Go 服务里调用 http.Client 后,Response.Body 没有在所有路径关闭,连接会被持续占用,pprof 里常能看到 net/http 相关 goroutine 增长。用 defer resp.Body.Close()、完整处理响应体、复用 Client,并通过压测与连接指标复查,可以把这类问题收住。201 收藏 -
Go 泛型接口同时写类型集和方法时,约束的是可接受的类型与可调用的方法。本文用一个可运行的小实验拆开两层边界,解释为什么某些类型能传入、为什么调用方仍然不能调用具体类型方法,并给出检查和扩展写法。201 收藏 -
Go 的 json.Decoder.DisallowUnknownFields 能及时发现请求体中的未知字段,但直接全局开启也可能破坏旧客户端兼容。本文用可运行示例拆解严格解析、错误定位、兼容迁移和上线检查清单。201 收藏 -
Go 1.23 引入的 slices.Values 可以把切片包装成 iter.Seq。本文从实现、空切片和提前停止三个边界出发,说明它与普通 range、slices.Collect 的连接方式。201 收藏 -
围绕 Go 1.26 Green Tea GC 的小对象标记扫描、同口径基准和 nogreenteagc 回退对照,说明如何判断收益与定位回归。201 收藏 -
Go 标准库 flag.FlagSet 可以为每个子命令建立独立的参数集合。本文用 serve 和 check 示例说明命令分发、参数解析、位置参数校验及错误边界。201 收藏 -
Go 将 JSON 解码到 map[string]any 时,数字默认进入 float64,可能破坏大整数精度。本文用 Decoder.UseNumber 保留 json.Number,并说明何时使用 Int64、Float64、String 或结构体字段。201 收藏