Go教程技术文章
-
用 Go 检查外部命令启动时会继承哪些环境变量,演示 Cmd.Environ、Cmd.Env 与 LookPath 如何配合,让本地和生产环境的启动条件更容易复现。250 收藏 -
用 Go 的 net/netip 解析 CIDR 配置并校验客户端地址,重点看 Prefix.Contains 的地址族边界、ParsePrefix 错误处理与 PrefixFrom 的掩码差异。250 收藏 -
用 Go net/url.URL.JoinPath 处理接口基础地址与资源路径的拼接,说明重复斜杠、绝对路径片段、查询参数和转义边界,给出可测试的请求地址写法。248 收藏 -
Golang · Go教程 | 1天前 | golang · go · 性能 · pprof · 编译器 · 工程实践 · 性能优化 pprof Go PGO profile-guided optimization go build
Go PGO 的收益首先取决于 profile 是否代表真实生产负载,其次要确认构建确实读取了目标 profile。本文从采集、构建和对比三处检查没有加速的原因,并给出可复查的最小流程。248 收藏 -
Go 1.21 引入的 log/slog 适合结构化日志,但 password、token 和手机号不能直接写入生产日志。本文从一个小型订单服务出发,用 ReplaceAttr 处理嵌套组字段,接入 JSONHandler,并用 bytes.Buffer 验证脱敏结果。247 收藏 -
Go 1.25 将 testing/synctest 从实验功能带到标准库可用状态,本文用超时重试测试说明如何替换旧开关、检查虚拟时间语义并让 CI 稳定验收。245 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · golang · 性能优化 · 接口设计 · 性能优化 Go字符串 缓冲区复用 encoding.TextAppender MarshalText
Go 1.24 的 encoding.TextAppender 让类型可以直接把文本追加到已有字节缓冲区,适合日志、协议编码和批量格式化场景。本文从 MarshalText 的临时分配问题出发,说明 AppendText 的实现边界、错误传播和可验证的基准写法。245 收藏 -
Go 泛型约束既能描述可参与运算的类型集合,也能要求调用方具备指定方法。本文用一个带 String 方法的泛型容器,拆开接口组合、~ 底层类型和方法集的边界,解释常见 cannot use 报错该怎么定位。245 收藏 -
Golang · Go教程 | 1个月前 | HTTP · Go教程 · 问题排查 · io.ReadAll · JSON绑定 · Go教程 Go HTTP请求体 io.ReadAll Request Body JSON绑定
Go HTTP 请求体本质上是一个流,读取一次后游标就到末尾。中间件或日志里先用 io.ReadAll 读过 body,后面的 JSON 绑定就可能拿到空内容。排查时看读取顺序、Content-Length 和绑定错误,修复时缓存字节并用 io.NopCloser 重新赋回 r.Body。244 收藏 -
Go 的 crypto/subtle.ConstantTimeSelect 适合在两个整数结果之间做常量时间选择,但它不能替代完整的密码学实现。本文从掩码、输入约束、编译验收和错误用法说明它的边界。244 收藏 -
用 Go runtime/trace 的 Task、Log 和 Region 标记一次异步请求,把采集、查看与代码验证串起来,帮助定位跨 goroutine 的阶段耗时和事件顺序。244 收藏 -
Golang · Go教程 | 1星期前 | 并发 · 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 收藏 -
Go 泛型函数的约束既要表达可接受的类型,也要让调用方看得懂。本文从类型集、接口方法和类型推断三个边界出发,拆解约束设计、编译验证与常见误区。242 收藏 -
time.Duration 本质是纳秒数量的 int64 别名。参与整数除法时结果会向零截断,先明确单位和余数,再决定是否转换为浮点或保留纳秒精度。242 收藏 -
Go 泛型约束中的 ~ 不是装饰符,而是把底层类型纳入类型集的边界工具。本文从一个可复现的金额类型例子出发,区分精确类型、底层类型和接口约束,给出编译器核对方法与选型清单。241 收藏