Go语言技术文章
-
Go runtime/secret 可在受保护调用树结束时擦除寄存器和栈,并在相关堆对象不可达且被 GC 发现后擦除分配,从而缩短临时密钥出现在后续内存转储中的时间。本文给出最小用法、构建条件、平台边界与不能被它消除的副本风险。156 收藏 -
Go 的 archive/tar 适合流式读取归档。本文区分 Header 与 payload,演示只保留文件头元数据、用固定缓冲区消费内容,并说明超大条目和异常归档的内存控制边界。155 收藏 -
解释 weak.Pointer.Value 返回 nil 的正常回收语义,区分共享引用容器与目标字段的数据竞争,并给出锁、KeepAlive 和 race detector 的排查写法。153 收藏 -
Go slices.SortedStableFunc 会把 iter.Seq 收集到新切片,再按比较器稳定排序;比较结果相等的元素保留原迭代顺序,空序列返回 nil。本文说明比较器写法、空结果边界,以及它与 SortStableFunc 的选择。152 收藏 -
Go 基准测试变快不等于线上服务变快,本文从 CPU 配额、GOMAXPROCS、GOGC、输入规模、缓存命中和 pprof 指标对照出发,给出一套可重复的排查清单。152 收藏 -
Go text/template 的 FuncMap 函数可以通过第二个 error 返回值中止 Execute。本文用一个校验函数说明错误传播、ExecError 解包、部分输出和生产边界。151 收藏 -
Go 默认 Client 可以被多个 goroutine 并发复用,但并发安全不等于超时与连接池边界适合生产流量。本文区分空闲连接、总连接、请求超时和响应体回收,并给出从默认 Transport 克隆配置的判断方法。151 收藏 -
接口断言成功只说明当前动态类型满足目标类型,不能证明 type switch 已覆盖全部输入。本文用 Go 示例定位遗漏 case,并补上 default 兜底和表格测试。149 收藏 -
Go 的 template.Clone 会复制基础模板及其关联模板命名空间,随后在副本中重新定义 block,便能生成互不污染的模板变体。本文用通知模板小项目演示默认块、局部覆盖、执行与测试。148 收藏 -
OpenTelemetry Go 的 Span 到达顺序不等于调用顺序。本文从 HTTP 埋点、Context 传播和暂存配对三个层面说明,怎样让乱序遥测仍能还原服务调用关系。148 收藏 -
Go regexp.Longest 会把整体匹配从最左优先改成最左最长,捕获组因此可能随整体候选一起变化。本文用最小示例解释选择规则、POSIX 差异与并发配置边界。146 收藏 -
reflect.Value.Clear 对 map 会删除全部条目并让长度变为 0,对 slice 则只把当前长度范围内的元素设为零值,长度和容量保持不变。本文用示例讲清别名、nil、Kind 和 CanSet 边界。145 收藏 -
Go strconv.ParseFloat 返回 ErrRange 时,返回值通常是 ±Inf,不能直接当作普通业务数值使用。本文用示例说明 ErrRange、ErrSyntax、bitSize 与有限值校验的处理边界。145 收藏 -
Go 错误建模可按调用方需求选择:只需判断固定条件时用哨兵错误,需要读取操作、资源或原因等字段时用自定义类型。本文给出 Is、As、%w、组合模式、信息边界与兼容性检查。145 收藏 -
Go 的 os.CreateTemp 通过 pattern 控制临时文件名前缀;加入星号还能指定随机段位置并保留扩展名。本文说明目录选择、清理责任与不同创建方案的适用边界。144 收藏