Go问答技术文章
-
Go 使用 archive/tar 解包时,先把 Header.Name 归一化为目标目录内的相对路径,再用 filepath.Rel 判断边界,并分别处理目录、普通文件和符号链接。115 收藏 -
Go 文件跨盘迁移不要直接依赖 os.Rename;应在目标目录创建临时文件,复制并重新计算 SHA-256 校验,确认一致后再 Rename 替换目标,成功后按需删除源文件。115 收藏 -
Go 1.22 起可以直接对整数使用 range。本文用可运行的小例子说明 range n 实际遍历的范围、零值和负数边界、变量声明规则,以及旧版本项目如何选择兼容写法。114 收藏 -
Go 泛型函数的类型推断失败,通常不是函数体问题,而是普通实参、赋值上下文或类型约束没有共同解。本文用最小示例拆解常见报错,并给出显式实例化和边界检查方法。114 收藏 -
Go encoding/base64 的 NewEncoder 会把不足一个完整分组的尾部数据暂存在内部,必须调用 Close 才能刷新到目标 Writer。本文用最小代码说明正确关闭顺序、StdEncoding 与 RawStdEncoding 的 padding 边界,以及 io.Copy、文件资源和错误处理的组合方式。114 收藏 -
Go 的一次性值闭包适合把昂贵初始化延迟到第一次真正使用时,并保证并发调用只执行一次。本文用标准库代码说明闭包状态、panic 记忆和失败返回值的边界。113 收藏 -
Go 接口装入 typed nil 后为什么不等于 nil?本文用静态类型、动态类型和动态值拆开接口语义,解释 error 返回中的常见陷阱,并给出类型断言、反射与 API 边界的处理清单。113 收藏 -
Go 项目开启 vendor 后,不能只看目录是否存在。本文用 go env、go list -f 和 vendor/modules.txt 确认实际依赖目录,并解释构建命令与 go mod 命令的取源边界。113 收藏 -
Go os/exec 同时读取 StdoutPipe 和 StderrPipe 时,串行消费可能因管道缓冲写满而阻塞。本文给出 Start、双路读取、Wait 的修复顺序,并说明何时使用 CombinedOutput。113 收藏 -
Golang · Go问答 | 2个月前 | golang · 超时 · HTTP · Go问答 · 网络排查 · 连接超时 http.Transport Client.Timeout Go HTTP 客户端超时 TLS握手超时
Go 的 http.Client 超时太粗时,DNS、建立连接、TLS 握手和响应读取会混在同一个等待里。本文用一段可复现的慢请求场景拆开 Transport 参数,给出基线指标、改动方案和复测边界。112 收藏 -
Go 里用 slices.Delete 删除元素后,切片长度变小不代表底层数组立刻释放。要结合 Go 版本、元素类型、尾部引用是否清零和切片是否继续持有容量来判断 GC 边界。本文从批量过滤场景拆开删除、复用与内存回收的关系。112 收藏 -
Go 的 os.File.Chmod 并不是跨平台等价的权限开关:Unix 会使用权限位及特殊模式位,Windows 当前只看 0o200 来切换只读属性。本文用同一段代码拆开模式位、符号链接和平台边界,给出可验证的写法。112 收藏 -
Go 客户端只在生产环境出现 x509 证书错误时,从系统根证书、容器 CA 包、证书链和 ServerName 四层排查,并用安全配置完成修复。112 收藏 -
Go context 创建派生上下文后应尽快调用 cancel。本文解释 WithTimeout 的定时器和父子关系为何需要主动释放,并给出函数、循环、goroutine 的安全写法。112 收藏 -
Golang · Go问答 | 2个月前 | 云原生 · golang · 性能优化 · kubernetes · Go HPA不扩容 Kubernetes HPA CPU resources requests HPA并发指标 Go服务扩缩容
Go 服务部署到 Kubernetes 后,HPA 没有按预期扩容,常见原因不是 HPA 失效,而是 CPU 利用率与 requests 的关系、业务真实瓶颈和缩放行为没有对齐。本文用最小 HPA 配置说明何时选 CPU、何时考虑并发或队列指标,以及如何避免扩缩容抖动。111 收藏