Go教程技术文章
-
Go 1.24 完整支持带类型参数的别名声明。本文用一个从 legacy 包迁移到 collection 包的 Set API,比较 type 定义与 type 别名的差异,说明方法、导出类型、go.mod 版本和工具链兼容边界。335 收藏 -
Go 1.26 将此前实验性的 Green Tea 垃圾回收器设为默认。升级后不能只看单次压测数字,本文从适用场景、指标基线、最小验证和临时回退开关整理一套可落地的检查方法。334 收藏 -
调用 context.WithCancel 后,goroutine 仍然不退出,通常不是 cancel 失效,而是工作循环没有监听 Done 或被阻塞在不可取消的操作上。本文用最小代码复现问题,再通过 pprof、日志和退出计数定位原因,给出可回归的修复方式。334 收藏 -
Golang · Go教程 | 3星期前 | 并发 · 标准库 · 命令行 · Go教程 · SHA-256 · 文件校验 · 命令行工具 SHA-256 文件校验 worker pool Go教程 目录扫描
发布包、离线资料或备份文件交付前,手工比对文件很容易漏。本文用 Go 标准库做一个并发 SHA-256 清单工具:扫描目录、限制并发、稳定输出,再用同一份清单复查文件是否被改动。328 收藏 -
sync.Map 不是普通 map 的无脑替代品。本文用热点配置缓存这个场景,比较读多写少、频繁更新和带类型断言三种路径,结合 Go 基准测试与内存占用,说明什么时候值得采用、什么时候应该继续使用 map 加 RWMutex。318 收藏 -
Golang · Go教程 | 3星期前 | HTTP · Go教程 · 服务治理 · Shutdown · SIGTERM · SIGTERM Go 优雅关闭 http.Server Shutdown Go HTTP 服务 连接收尾 服务下线
Go HTTP 服务下线时,直接退出会打断进行中的请求;只调用 Shutdown 又可能无限等待。本文结合 net/http 官方行为说明信号接收、流量摘除、超时预算、长连接和依赖收尾应该怎样拆分。316 收藏 -
Golang · Go教程 | 2星期前 | 内存 · JSON · 性能优化 · Go教程 · json.Decoder · Go 流式解析 json.Decoder 超大JSON 峰值内存 批次写入
Go 服务读取数百 MB 的 JSON 数组时,直接 json.Unmarshal 往往先把整份数据堆进内存。用 json.Decoder 按元素读取、限制批次大小并记录错误行,可把峰值堆从输入规模中拆出来;文中给出可运行示例和压测核对方法。310 收藏 -
从一个大租户挤占接口容量的场景出发,讲清 Go 服务如何按全局、租户和路由拆分限流边界,单实例如何用 x/time/rate 落地,以及多实例为什么需要共享预算。294 收藏 -
Go 转存远端文件时,io.ReadAll 适合小而且必须整体检查的内容;未知大小或大文件应使用 io.Copy 保持流式写入。本文用大小上限、临时文件、SHA-256 和长度核对给出可直接落地的选择方法。276 收藏 -
Go 服务需要在不重启进程的情况下临时关闭一条新逻辑时,atomic.Bool 可以提供轻量的并发开关。本文用运行时功能开关示例说明 Load、Store、启动默认值、灰度比例和回滚检查该怎么组织,避免数据竞争与状态不一致。270 收藏 -
Go sync.Pool 能减少临时对象分配,但它不是可靠缓存。本文用日志和基准测试拆开 Get、Put、GC 清空、对象重置与并发场景,说明哪些对象适合放进 Pool,哪些数据必须交给真正的缓存或业务存储。261 收藏 -
泛型代码里通过 reflect.TypeOf((*T)(nil)).Elem() 获取类型既绕又容易误读。本文用 Go 1.22 的 reflect.TypeFor[T]() 重写一个注册表实验,比较 nil、指针和接口类型的结果,并给出版本兼容与测试边界。259 收藏 -
部署一个很小的 Go Web 服务时,模板和静态文件常常成为额外的发布物。本文从零搭建一个使用 embed.FS 的小项目,把页面与资源编译进单一二进制,并说明目录、路由、验收和更新边界。255 收藏 -
Go 服务更新本地配置时,直接覆盖正式文件可能让读取方看到半截内容。本文用临时文件、写入校验、Sync 和 Rename 组成原子替换流程,并补上权限、并发读取、失败回滚与验收日志。253 收藏 -
Go log/slog 不只是把日志改成 JSON:请求 ID、用户字段和模块信息应该在哪一层注入,决定了日志能否检索以及每条记录的成本。本文从 HTTP 请求链路拆开 With、分组属性、动态字段和高并发场景的取舍。252 收藏