-
go/types.Info.Scopes 只会记录类型检查器为指定 AST 节点建立的词法作用域。本文用一个最小示例说明如何初始化作用域映射、完成 Check、按节点读取 Scope,并解释函数体 BlockStmt 为什么不单独出现在映射中。
-
Go 1.24 引入的 os.Root 可以把文件操作限制在指定目录树内。本文用 os.Root.Open 说明相对路径、..、符号链接、错误处理和关闭资源的边界,并对比一次性使用的 os.OpenInRoot。
-
Go runtime/metrics 的 Sample.Value 不能直接按一种数值类型读取,应先用 Kind 判断 KindBad、KindUint64、KindFloat64 或 KindFloat64Histogram,再调用对应方法。本文说明类型分派、未知指标处理和复用采样切片时的边界。
-
Go database/sql 的 Scan 把数据库 NULL 作为 nil 传入,直接接收为普通 string 会因无法表达空值而报错。本文对比 sql.NullString、sql.Null[string] 与 COALESCE 的适用边界。
-
Go database/sql 中常见的 defer tx.Rollback() 是失败路径的兜底清理。成功执行 Commit 后,事务已经进入完成状态,延后的 Rollback 通常只返回 sql.ErrTxDone,不会撤销已经提交的结果。本文解释 defer 时机、事务状态和错误处理模板。
-
reflect.Value.MapIndex 找不到键时返回的是无效的 zero Value,不应直接调用 Interface、Kind 或 Elem。本文说明怎样用 IsValid 判断缺失键,区分元素零值与缺失键,并处理 nil map、key 类型和并发访问边界。
-
DB.Stats 的 MaxIdleClosed 是因 SetMaxIdleConns 关闭连接的累计次数,不等于连接泄漏。本文拆开空闲数量回收、空闲时间回收和生命周期回收的区别,并给出用 DBStats 快照排查连接池的 Go 写法。
-
IdleTimeout 只负责 keep-alive 连接等待下一次请求的时间,不负责首个请求的慢请求头、慢请求体或响应写入。本文用一个最小 Go HTTP Server 拆分四类超时,并给出慢连接排查与配置方法。
-
Go 双向 TLS 认证中,tls.Config.GetClientCertificate 可以根据服务端的证书请求选择客户端证书。本文说明 CertificateRequestInfo 的筛选信息、回调返回值、错误与空证书边界,以及它和 Certificates 字段的关系。
-
Go TLS 的 MinVersion 限定协议协商下限,旧客户端最高版本不足时会因无共同版本握手失败。本文给出服务端配置示例,说明证书、TLS 终止点、日志与版本组合排查方法。
-
go/types.Named.Origin 用来从实例化后的 Named 找回泛型原始定义。本文对照 Obj、TypeArgs、TypeParams 和 Underlying,说明静态分析中如何正确区分实例类型、声明身份、类型实参与底层结构。
-
Go 默认 Transport 会按目标协议和环境变量选择代理。本文解释 HTTP_PROXY、HTTPS_PROXY、NO_PROXY 与进程缓存的关系,提供独立 Transport 的配置诊断示例及部署迁移注意事项。
-
Go 1.22 以后,ServeMux 会在注册互相冲突的方法模式时直接 panic。本文用最小复现说明冲突判定规则,并给出统一通配符、拆分 HTTP 方法和处理版本迁移的修复方式。
-
Go 的 fs.Sub 负责把已有文件系统映射成一个子树视图,但不会主动确认目录已经存在。本文解释错误为何延后到 Open、ReadFile 或 ReadDir 等访问动作,并给出显式检查与封装方式。
-
Go 服务端可以直接调用 r.Referer() 读取请求头中的 Referer;缺失时返回空字符串。本文说明它与 Header.Get 的关系、测试写法、代理和隐私策略造成的缺失边界,以及为什么不能把 Referer 当成认证或安全授权依据。