Go语言技术文章
-
配置文件写入成功并不等于断电后一定保留。本文用 Go 的临时文件、os.File.Sync、os.Rename 和目录同步串起安全替换流程,解释每一步解决什么问题,以及如何用重启和故障注入思路核对结果。250 收藏 -
用 Go 检查外部命令启动时会继承哪些环境变量,演示 Cmd.Environ、Cmd.Env 与 LookPath 如何配合,让本地和生产环境的启动条件更容易复现。250 收藏 -
解释 Go 文件写入、Sync 和 Close 的边界,给出临时文件替换与错误处理的可验证写法。249 收藏 -
Go 1.25 已将 testing/synctest 从实验能力带入标准库,升级到 Go 1.26 后应移除 GOEXPERIMENT=synctest,并把旧实验 API 改成正式包导入;本文用最小并发测试说明迁移、检查与回退边界。248 收藏 -
用 Go net/url.URL.JoinPath 处理接口基础地址与资源路径的拼接,说明重复斜杠、绝对路径片段、查询参数和转义边界,给出可测试的请求地址写法。248 收藏 -
用一个可复现的流式上传场景说明 Go io.Pipe 的同步阻塞关系、错误回传路径和关闭顺序,避免生成端与上传端互相等待。248 收藏 -
Golang · Go问答 | 2天前 | golang · slog · 日志排查 · 结构化日志 · Go 1.21 · 结构化日志 JSON日志 Go slog.WithGroup slog嵌套字段 日志属性
Go slog.Logger.WithGroup 用组名组织结构化日志字段,但空组名不会创建嵌套层,属性归属还会受到 Handler 处理规则影响。本文用 JSON 输出示例拆解 WithGroup、WithAttrs 和重复组名的边界。247 收藏 -
Go 1.25 将 testing/synctest 从实验功能带到标准库可用状态,本文用超时重试测试说明如何替换旧开关、检查虚拟时间语义并让 CI 稳定验收。245 收藏 -
Golang · Go教程 | 3天前 | 标准库 · golang · 性能优化 · 接口设计 · 性能优化 Go字符串 缓冲区复用 encoding.TextAppender MarshalText
Go 1.24 的 encoding.TextAppender 让类型可以直接把文本追加到已有字节缓冲区,适合日志、协议编码和批量格式化场景。本文从 MarshalText 的临时分配问题出发,说明 AppendText 的实现边界、错误传播和可验证的基准写法。245 收藏 -
Go 泛型约束既能描述可参与运算的类型集合,也能要求调用方具备指定方法。本文用一个带 String 方法的泛型容器,拆开接口组合、~ 底层类型和方法集的边界,解释常见 cannot use 报错该怎么定位。245 收藏 -
Golang · Go问答 | 1天前 | golang · 配置管理 · regexp · Go问答 · 文本序列化 · Go regexp.Regexp.MarshalText UnmarshalText 正则配置 文本序列化
regexp.Regexp 可以通过 MarshalText 保存为正则表达式文本,再由 UnmarshalText 调用 Compile 恢复。本文核对序列化内容、非法模式的错误边界,以及 POSIX 和 Longest 模式无法完整保留的限制。245 收藏 -
Go 的 crypto/subtle.ConstantTimeSelect 适合在两个整数结果之间做常量时间选择,但它不能替代完整的密码学实现。本文从掩码、输入约束、编译验收和错误用法说明它的边界。244 收藏 -
用 Go runtime/trace 的 Task、Log 和 Region 标记一次异步请求,把采集、查看与代码验证串起来,帮助定位跨 goroutine 的阶段耗时和事件顺序。244 收藏 -
解释 Go strings.Builder.Grow 的保证范围、容量与已写入字节的关系,以及 String 返回值和后续写入之间容易误判的边界。243 收藏 -
Golang · Go教程 | 5小时前 | 并发 · pprof · 故障排查 · Go教程 · Go 1.27 · net/http/pprof goroutineleak goroutine 泄漏 runtime/pprof Go 1.27
Go 1.27 将 goroutineleak profile 正式带入 runtime/pprof 和 net/http/pprof。本文从一个被 channel 永久阻塞的最小案例出发,演示如何采样、判断可疑协程,并说明全局变量和可运行协程为什么会造成漏报边界。243 收藏