Go语言技术文章
-
Go regexp.FindAllStringIndex 返回的是字节下标,不是字符序号。本文用中文字符串拆开说明下标、切片、Rune 边界和常见误用,给出可直接验证的安全写法。251 收藏 -
Go 1.27 新增标准库 uuid 包。本文用 NewV7、Parse、Compare 和 String 拆开时间排序、格式兼容、非法输入与零值边界,给出可运行的请求标识示例。251 收藏 -
Go 1.23 的 maps.Keys 返回 iter.Seq,遍历顺序仍不保证稳定。本文从 for range 与 maps.Keys 的关系出发,演示如何用 slices.Sorted 得到可复现的键序列,并说明排序成本与兼容边界。251 收藏 -
配置文件写入成功并不等于断电后一定保留。本文用 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 收藏 -
Go 1.21 引入的 log/slog 适合结构化日志,但 password、token 和手机号不能直接写入生产日志。本文从一个小型订单服务出发,用 ReplaceAttr 处理嵌套组字段,接入 JSONHandler,并用 bytes.Buffer 验证脱敏结果。247 收藏 -
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 收藏