-
ECDSA 公钥不能直接当作 ecdh.PublicKey 的原始字节使用。本文用 Go 标准库说明 PKIX 公钥解析、ecdsa.PublicKey.ECDH 转换、共享密钥验证,以及 invalid public key 的常见边界。
-
Go runtime/trace.NewTask 为跨函数、跨 goroutine 的逻辑工作流创建携带 task 的 context,再用 Log、WithRegion 和 Task.End 组织执行追踪。本文只讲任务边界、上下文传播和结束时机,不展开 pprof 性能剖析。
-
crypto/ecdh 没有 ParsePrivateKey,Bytes 的原始私钥字节应通过指定曲线的 NewPrivateKey 恢复。示例保存格式版本、曲线与 Base64 载荷,并解释原始编码与 PKCS#8 的区别。
-
Go debug/dwarf.Reader 按前序顺序读取 DIE,Children 表示后面有子树,Tag 为零表示当前子列表结束,nil 则表示整个 info section 读完。本文用深度计数器和 SkipChildren 讲清遍历写法。
-
ScanComments 负责识别注释,SkipComments 决定识别后是否跳过。本文用一个小型 text/scanner 工具说明两者组合,并区分 go/scanner 的 API 边界。
-
go/scanner 的自定义错误处理通过 Init 的 ErrorHandler 参数注册。保存回调中的 token.Position 与消息,可保留文件名、行号、字节列及偏移;同时区分 text/scanner 的 Error 字段与 Scan 的 token 位置。
-
Go printer.CommentedNode 不会自动复制整个 AST 文件的注释,它把一个目标节点和指定的 ast.CommentGroup 切片交给 printer.Fprint。本文用一个源码生成场景说明如何筛选注释、复用 FileSet 并处理未选注释与合成节点的边界。
-
sync.Cond 的 Signal 只唤醒当前已经等待的 goroutine,不会缓存通知。本文说明为什么先 Signal 再 Wait 会阻塞,以及如何用共享条件、同一把锁和 for 循环写出可靠的等待逻辑。
-
Go 1.23 的 maps.All 会把 map 转成 iter.Seq2,让 range 同时接收键和值。本文用对比场景说明最小写法、提前终止、无序语义、自定义 map 类型和选型边界。
-
sync.Map.Clear 会删除当前条目,但不会替你建立清空期间的业务屏障。本文用并发缓存重置流程说明 Load、Store 的可见性、旧请求回写风险和代际版本号方案。
-
sync.Map.CompareAndSwap 返回 false 不会指出改写者,也不提供失败时的旧值。通过可比较结构体携带版本、写入者与操作标识,并区分后续 Load 观察、键删除及类型差异,避免错误归因。
-
Go testing.T.Attr 的键不能包含 Unicode 空白,值不能包含回车或换行;违规时会让测试失败并跳过该属性。本文解释约束来源、错误模型,以及如何把自由文本稳定映射为可记录的单行属性。
-
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。
-
io.OffsetWriter 把逻辑偏移映射到基准偏移之上,Seek 返回的是逻辑位置,Write 和 WriteAt 的坐标也不能混看。本文用分段写入场景拆解错位原因,并给出调用约定、边界处理与排查清单。
-
Go 的 Cmd.Wait 不只等待主进程退出,还可能等待 stdout、stderr 的复制循环收尾。本文用 WaitDelay 拆解后代进程遗留管道导致的阻塞,演示如何设置等待上限并用 errors.Is 判断 ErrWaitDelay,同时说明阻塞 Writer 和进程树管理的边界。