-
Go 客户端响应体读不到,通常不是一个原因:可能请求本身失败、Body 已经被消费、响应按协议没有内容,或读取过程中发生了错误。本文用 net/http 的真实返回关系拆开排查,并给出文本与 JSON 都能复用的读取写法。
-
Go 私有依赖出现校验和失败时,按 GOPRIVATE、GONOSUMDB、GOPROXY 和 Git 凭据分层排查,避免用全局关闭校验掩盖代理或认证问题。
-
Go TCP 连接空闲后被 NAT、负载均衡或防火墙回收时,KeepAlive 只能帮助本机探测连接状态,不能替代中间设备策略。本文说明 net.Dialer、KeepAliveConfig、应用心跳和重连的边界。
-
Go 升级后 gofmt 可能因为格式规则或实现调整产生少量空白差异。本文用变化文件数、diff 行数和工具链版本定位原因,再通过 go.mod、toolchain 与 CI 固定格式化环境。
-
Go text/template 读取多层 map 时,可以用内置 index 函数把多个键按层传入;本文说明点号取键与 index 的区别、动态键写法,以及 missingkey=error 如何让缺失字段及时返回 Execute 错误。
-
Go 里的 runtime.NumCPU 与 GOMAXPROCS 都和 CPU 有关,但一个描述可用逻辑 CPU,另一个限制同时执行 Go 代码的并行上限。本文用代码、容器边界和反例拆开两者的职责。
-
Go 解析错误位置有两条处理路径:scanner.ErrorList 直接提供文件、行、列和消息,AST 节点的 token.Pos 则必须交给同一个 token.FileSet 映射。本文说明 Position、PositionFor 以及 //line 指令下的坐标边界。
-
Go template 的 missingkey=error 只在执行阶段读取缺失 map 键时生效。本文从 Parse、Option、Execute 和 ExecuteTemplate 的关系排查为什么没有报错,并给出接住执行错误的修复写法。
-
errors.Is 匹配不到自定义包装错误,通常不是错误消息不一致,而是包装类型没有通过 Unwrap 暴露内部原因,或创建包装时使用了 %v。本文用错误树、单错误 Unwrap、多错误 Unwrap 和自定义 Is 方法梳理排查与设计边界。
-
go/types 检查返回错误后,types.Info 里已经收集的定义、引用和表达式类型并不会自动全部失效,但它们只代表局部结果。本文说明如何结合 Package.Complete、map 查找和 nil 判断安全使用这些信息。
-
时间格式化只展示部分墙上时钟信息,time.Time.Equal 比较的是时间瞬间;两个值都带单调时钟读数时,还可能按单调读数比较。本文解释相同文本却返回 false 的原因,以及 Round(0)、UTC、Parse 和 Equal 的正确边界。
-
Go json.Encoder 默认会把 JSON 字符串中的 HTML 相关字符转成 Unicode 转义,SetEscapeHTML(false) 可在非 HTML 场景恢复可读输出。本文对比两种文本表示,解释安全边界、Encoder 与 Marshal 的区别以及 Encode 末尾换行。
-
从 GOMOD、go env、GOPROXY、GOPRIVATE 和 tidy 输入边界入手,排查 Go go mod tidy 配置没有生效的常见原因。
-
Go multipart.Part.FormName 只返回 form-data 分段的 name,attachment 含有同名参数也会返回空字符串。本文用原创示例说明通用参数解析、错误处理与接收策略,避免将附件元数据误当表单字段。
-
Go 嵌入字段的方法提升遵循浅层优先规则,同一深度出现同名方法时短选择器会产生歧义。本文用结构体示例说明显式字段路径、外层统一入口与接口方法集检查方法。