Go教程技术文章
-
Golang · Go教程 | 3星期前 | 错误处理 · Go教程 · errors.Join · errors.Is · Go 1.20 · 错误包装 errors.Is errors.As Go errors.Join 多错误处理 Go 1.20
Go 1.20 的 errors.Join 可以把多条错误合并为一个错误值,同时保留 errors.Is 和 errors.As 的判断能力。本文用批量关闭资源、并行任务汇总等场景说明该怎么用,以及哪些时候不该把错误一股脑拼在一起。431 收藏 -
Go 服务把审计日志同步写进一个文件后,吞吐上不去、磁盘抖动还会拖慢请求。本文用分片队列和批量落盘拆开写入压力,并验证顺序、重放与停机收尾。430 收藏 -
一个 Go REST API 如果让每个接口自由拼错误 JSON,客户端很快就会遇到无法判断、重复提示和误重试。本文用统一错误信封、稳定错误码和请求追踪字段,整理一套可兼容旧客户端的设计方式。427 收藏 -
列表接口从 page 改成 cursor 时,真正容易出问题的不是 SQL,而是参数语义、错误响应和旧客户端兼容。本文用 Go net/http 设计一个可灰度迁移的游标分页接口,给出返回结构、边界校验、错误码和回归检查。427 收藏 -
Golang · Go教程 | 1星期前 | 并发 · go · trace · 性能排查 · Go 1.25 · Go 1.25 runtime/trace FlightRecorder 运行时追踪 延迟排查
Go 1.25 的 runtime/trace.FlightRecorder 用内存环形缓冲持续保留最近一小段运行时追踪,等异常延迟发生时再写出文件。本文对比传统 Start/Stop 采集方式,给出 HTTP 服务接入、触发写盘和资源边界检查。425 收藏 -
Go 用 json.Decoder 读取请求体或消息流时,EOF 可能代表正常结束,也可能暴露出截断输入。本文用连续 JSON、空白和尾部脏数据三个例子,拆开判断方式并给出可复查的读取代码。413 收藏 -
Golang · Go教程 | 3星期前 | 前端开发 · Go教程 · html/template · 网页模板 · 导航 · Go html/template CurrentPath 导航高亮 template.FuncMap Go网页模板
Go 服务端渲染页面时,导航高亮经常被写成散落在多个页面里的条件判断。文章给出 CurrentPath、NavItem 与 template.FuncMap 的最小组合:路由层传入页面状态,模板负责循环和 class 条件,CSS 只认 is-active,从而让新增菜单和单元测试都更轻松。409 收藏 -
Go 批量 CSV 导入不能先把全文件读进内存。用 csv.Reader 逐行读取、用大小与行数预算限制请求、按批写库并回传有限的失败行,才能让大文件导入既可控又方便用户修正。407 收藏 -
给 Go HTTP 服务加一层轻量请求 ID 中间件:优先复用客户端 ID,没有可靠值时生成新 ID,再把它传入 context、响应头和 log/slog 日志,最后用 httptest 验收整条链路。405 收藏 -
Golang · Go教程 | 3星期前 | golang · Timer · 并发编程 · time.After · 性能排查 · time.After go timer Go 1.23 NewTimer Timer.Reset Timer.Stop
Go 1.23 之后,未引用的 Timer 可以被垃圾回收,time.After 不再天然等于内存泄漏。但在高频超时循环里,仍要先区分分配波动、超时语义和取消需求;需要复用或主动取消时,再用 NewTimer、Stop 和 Reset 把边界写清楚。403 收藏 -
Go 1.24 正式支持泛型类型别名,适合把旧包里的泛型类型平滑迁到新包。本文从包重构场景出发,说明别名与新类型的差异、旧代码影响、迁移步骤和最小验证方法。400 收藏 -
Go 1.26 重写了 go fix,它现在可以借助分析器发现并应用一批安全的现代化改动。本文从一个旧模块升级现场切入,说明如何先扫描、再查看差异、分批应用,并用 go test、go vet 和基准测试确认改动没有越过兼容边界。396 收藏 -
Go 服务 CPU 没满但请求排队、延迟升高,可能是共享锁竞争而不是算力不足。本文按运行手册说明如何判断信号、短时开启 mutex profile、定位持锁路径、做低风险修复并验证回归。395 收藏 -
Golang · Go教程 | 2星期前 | go · 性能 · net/http · HTTP缓存 · Go ETag If-None-Match 304缓存 http.ResponseWriter
Go 服务返回静态 JSON 或文章详情时,ETag 可以让浏览器先带 If-None-Match 询问资源是否变化,未变化就返回 304,减少响应体传输。本文用 net/http 写一个可运行的缓存协商示例,说明哈希生成、条件判断、响应头顺序和测试边界。395 收藏 -
Golang · Go教程 | 1星期前 | WEB开发 · go · net/http · 表单 · html/template · net/http URL参数 html/template 安全输出 Go教程 查询表单
服务端渲染的列表页并不只是读一个 q 参数:筛选条件要能回填,空结果要有明确状态,用户输入也不能直接拼进 HTML。本文用 Go net/http、url.Values 和 html/template 做一个可运行的筛选表单,并整理参数边界与安全输出检查。394 收藏