-
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 generate 可以通过 package 路径、同目录 Go 文件列表以及 -run、-skip 精确缩小生成范围。本文结合注释触发、执行顺序和失败边界,说明如何只对指定包运行代码生成指令。
-
Go database/sql 读取多个结果集时,要在当前结果集内用 Next 和 Scan,读完后用 NextResultSet 切换,并在两个 false 边界检查 Rows.Err。本文给出不依赖具体存储过程语法的通用读取骨架。
-
sql.NamedArg 只是把参数名称和值交给 database/sql,能否按名字绑定还取决于驱动的占位符语法和 NamedValueChecker 等接口。本文拆开参数转换链,说明为什么有些驱动必须改用位置参数,以及如何保持参数化查询。
-
Go go list -test -json 展示测试构建相关包信息,配合 -deps 可展开依赖包对象。说明 ImportPath、ForTest、DepOnly、测试导入字段及连续 JSON 解码的使用方式。
-
Go HTTP/1 服务端默认会在写响应前处理未读请求体。本文用 http.ResponseController.EnableFullDuplex 说明正确调用时机、分块读写、Flush、HTTP/2 差异和 ErrNotSupported 边界。
-
Go 的 time.Duration 底层是纳秒数,但配置通常需要 500ms、2s 这样的可读文本。本文区分 String 与 ParseDuration 的职责,并用一个轻量 DurationText 适配文本配置、错误处理和 JSON 字符串字段。