Go语言技术文章
-
Go time.Ticker.Reset 只改变后续周期,不等于清空 ticker.C。本文解释旧 tick 为什么不能用普通接收直接“排空”,并给出单 goroutine、非阻塞判断和重建 ticker 的选择边界。339 收藏 -
Go 的 FileMode 同时包含文件类型、普通权限和特殊权限。本文说明如何只替换权限位,正确构造 File.Chmod 入参,并处理 Unix 与 Windows 的语义差异。338 收藏 -
time.Duration 本质是 int64 纳秒计数,乘法、单位换算或退避累加一旦超出约 290 年范围就可能回绕成负数或异常的小值。本文从定时任务故障场景出发,给出边界判断、饱和乘法和定时器接入的 Go 实现。337 收藏 -
runtime/secret.Do 可以让 Go 在机密计算返回前清除相关寄存器与栈,并在堆对象变得不可达后交给垃圾回收器处理。本文用最小示例说明实验开关、平台限制、全局变量、panic 和 Goexit 等使用边界。337 收藏 -
go list -json 会把普通源文件、同包测试文件和外部包测试文件放进不同字段。本文用 GoFiles、TestGoFiles、XTestGoFiles 的包名边界,说明代码生成器和测试收集器该怎样选择数组。336 收藏 -
Go HTTP 请求遇到需要保留正文的重定向时,关键是区分 Body、GetBody 和 ContentLength。本文说明 NewRequest 对常见 reader 的处理,并给出自定义请求体的安全重放写法。334 收藏 -
以带计时器资源的 iter.Seq2 为例,说明 Pull2 的 next、stop、生产者 defer 和提前退出如何配合,给出可迁移的资源释放模板。333 收藏 -
Go 处理外部文件名时,filepath.Join 不能单独构成目录访问边界。本文结合 os.OpenInRoot 和 os.Root,说明固定目录、相对路径、符号链接、Root 生命周期以及平台限制应该怎样设计。331 收藏 -
用 go env -json 导出 Go 命令当前采用的有效编译环境,结合 -changed、指定字段和 Go 程序解析,适合 CI、部署排障与跨机器诊断。331 收藏 -
Go flag.FlagSet.Parse 遇到 -- 后会停止解析选项,后续参数通过 Args、Arg 和 NArg 读取。本文用最小示例解释位置参数被误判的原因,以及命令包装时如何安全透传参数。330 收藏 -
Go slices.CompactFunc 会在压缩连续重复项后清零尾部元素。本文区分尾部引用与整个 backing array 的生命周期,给出直接接收返回值、Clone 脱离旧数组和 Clip 的使用边界。329 收藏 -
Go HTTP 客户端已复用 Client 与 Transport,连接数仍上涨时,应检查 Response.Body 是否读到 EOF 并关闭。本文给出小响应体、错误状态码和大响应体的处理策略,并说明 HTTP/1.x 连接复用的边界。326 收藏 -
Go 用 os/exec 启动外部命令时,Cmd.Dir 可以固定子进程的工作目录,让命令稳定解析相对配置、输入和输出路径。本文从路径归属、相对可执行文件、Env/PWD 和启动错误几个证据入手,给出可直接改造的写法。325 收藏 -
Go 1.26 的 crypto/hpke 同时提供一次性 Seal/Open 与有状态 Sender/Recipient。本文用连续消息流程说明 enc、info、AAD、nonce 计数器和消息顺序的复用边界,帮助你选对上下文生命周期。325 收藏 -
Go 标准库 archive/tar 能读取 GNU/PAX 稀疏归档,但 Writer 当前不支持编码稀疏文件,因此不存在一组 Header 字段能直接开启稀疏写入。本文解释 Size、Typeflag、Format、PAXRecords 的边界,并给出普通条目和 GNU tar --sparse 两种可靠方案。320 收藏