Go语言技术文章
-
用 httputil.DumpRequestOut 导出 Go 客户端请求的脱敏元数据视图,隔离 URL、Header 和共享 Body,说明离线测试、敏感字段处理与真实传输的差异,全程无需读取业务响应。264 收藏 -
Go context 没有直接合并多个取消来源的通用函数,可以用派生的 WithCancelCause 作为汇合点,再用 AfterFunc 转发第二个来源。本文说明取消原因、清理函数、旧版本降级和 goroutine 回收边界。264 收藏 -
Go Reader 读到最后一行没有换行时,先区分输入没有终止符、Scanner 去掉换行和 EOF 处理顺序,再选择保留原文或在展示层显式补换行。264 收藏 -
Go 反射设置字段失败,通常不是 Set 方法本身的问题,而是 Value 不是可寻址值、没有用 Elem 解引用指针,或字段未导出。本文用最小结构体示例拆开 CanSet 的判断顺序,并给出可复用的安全设置入口。264 收藏 -
Go 通过 Lookup 与 WriteTo 读取 goroutineleak profile,可按用途选择文本或二进制输出。本文提供错误处理与文件保存示例,说明 Go 1.27 版本变化、空结果限制和受控诊断入口的边界。264 收藏 -
Go 1.24 起可以用 os.Root 把文件操作约束在指定目录树内。本文用一个上传目录示例说明 OpenRoot、Root.Open、Root.OpenFile 的相对路径用法,以及软链接、关闭和平台边界。264 收藏 -
Go archive/tar 的 Header.Xattrs 会被写成 PAX 的 SCHILY.xattr.* 记录。本文用一个紧凑示例说明怎样显式选择 PAX、怎样处理 PAXRecords 覆盖关系,以及键名和资源关闭的边界。264 收藏 -
Go go tool nm 可以列出目标文件、归档或可执行文件中的符号。本文解释地址、类型、名称三列输出,并用排序、类型参数和命令行过滤快速定位目标函数。264 收藏 -
Go JSON 数字反序列化后精度丢失,通常是因为 interface{} 默认把 JSON number 解码成 float64。本文用一个小型排障示例说明如何选择 int64、json.Number 和 Decoder.UseNumber,避免订单号、时间戳等大整数被悄悄改写。264 收藏 -
Go Testify 的 mock 期望遇到复杂请求结构体时,不必比较全部字段。本文用 MatchedBy 只匹配用户编号、动作等业务关键字段,并拆解值类型、指针、nil 与函数签名边界。264 收藏 -
Go Pond v2 的 Stop 是单向生命周期操作:停止任务池后,新的 Submit 不再被接受,并通过 ErrPoolStopped 返回结果。本文说明停止边界、并发提交时序、错误处理方式,以及需要继续接收任务时如何创建新池。264 收藏 -
go-audio/wav 的 PCMBuffer 和 FullPCMBuffer 都能读取 WAV 样本,但前者由调用方控制批次和内存,后者一次性聚合全部 PCM。本文从内存上涨的故障症状出发,说明两种方法的触发条件、循环写法和选择清单。264 收藏 -
Go 的 ed25519.PrivateKey.Public 会返回对应的 crypto.PublicKey。本文说明如何把它安全地断言为 ed25519.PublicKey,理解 64 字节私钥中的公钥后缀,并区分公钥派生、种子恢复与重新生成密钥。264 收藏 -
用 fmt.Formatter 为批处理记录定义稳定的格式化输出,正确读取 verb、flags、width 和 precision,并通过直接写入 fmt.State 减少临时字符串;同时避开 Format 递归和过度优化。264 收藏 -
Go 的 os.File.Sync 不是每次 Write 后都要调用。本文从 Write、Sync、Close 的语义差异出发,说明配置、检查点、缓存和临时文件的取舍,并给出错误处理与调用边界。264 收藏