Go教程技术文章
-
Go 的 log/slog 可以把 HandlerOptions.Level 设置为 slog.LevelVar,在不重建 Logger 的情况下运行时切换最低日志级别。本文给出完整配置示例,说明 Set、Level、Enabled 的边界,以及多 Handler、并发更新和昂贵参数计算时的处理方式。340 收藏 -
部署前想确认两份配置目录到底差在哪里,可以用 Go 标准库做一个只读快照工具。本文从 io/fs 和 filepath.WalkDir 出发,完成隐藏文件过滤、相对路径排序、SHA-256 摘要和 JSON 差异报告,并验证退出状态与异常边界。339 收藏 -
Go 1.27 让 go test 默认启用 stdversion 检查,用来发现代码使用了高于 go.mod 版本的标准库符号。本文从报错定位开始,说明 go.mod、构建标签和升级边界如何配合,并给出可复现的检查流程。339 收藏 -
Go 的 embed.FS 适合把默认配置随二进制一起发布,但路径写错、覆盖顺序不清和测试读错目录都很常见。本文从目录布局到运行时覆盖,给出可复用的最小实现、验证命令和回滚边界。339 收藏 -
CI 获取 Go 私有模块失败时,不要只把 GOPROXY 改成 direct。先看模块前缀是否命中 GOPRIVATE,再区分 GONOPROXY、GONOSUMDB、私有代理回退规则和非交互凭据问题。339 收藏 -
Go database/sql 事务不能简单理解为 Commit 失败后再 Rollback。本文用可复用代码说明提交前错误的回滚写法,以及提交错误后的未知状态、幂等和对账处理。339 收藏 -
用 Go 的 url.JoinPath 组装 API 路径,讲清路径段转义、查询参数、URL 对象转换、清理规则和常见坑。339 收藏 -
Go 里给 TLS 客户端加入自定义根证书时,先保留系统 CertPool,再用 x509.CertPool.Clone 建立隔离副本,避免不同租户或连接配置互相污染。本文说明最小写法、Clone 与直接赋值的边界,以及 RootCAs 的发布检查。339 收藏 -
Go 1.27 调整 go tool trace -http 的默认监听行为。本文用一个小型诊断工具说明只写端口、显式写 localhost 和绑定远程地址的差异,并给出升级后可复查的监听边界清单。338 收藏 -
Go 中可以通过 Scanner.Split 注册自定义 SplitFunc,按 || 等多字节分隔符读取记录。关键是未遇到完整分隔符时等待数据、EOF 返回余量,并用 Buffer 处理记录长度上限。338 收藏 -
用 Go 的 image/draw.DrawMask 把源图按 Alpha 蒙版叠加到目标图,掌握坐标对齐、draw.Over 与常见偏移排查方法。338 收藏 -
Go HTTP 服务的安全响应头不能只靠网关补齐。本文从 HSTS、X-Content-Type-Options 和 Referrer-Policy 三个常用边界入手,说明如何在 net/http 中统一设置、避免错误信任代理,并用 httptest 核对线上响应。337 收藏 -
Go 标准库的一次性初始化函数适合把昂贵且只需执行一次的结果封装成并发安全调用。本文从配置加载和失败传播两个场景入手,演示最小写法、panic 语义、Go 版本边界和测试方法。337 收藏 -
Go slog 统一记录请求 ID 和业务字段的实战方法:用 context 传递请求范围数据,用 Logger.With 和 WithGroup 分层复用稳定字段,并通过 InfoContext、LogAttrs 保持日志可检索且不串请求。337 收藏 -
io.MultiWriter 按顺序把同一份数据写入多个目标;中间目标失败时不会回滚或继续写。本文说明如何判断部分写入、记录失败目标并设计幂等补偿。337 收藏