-
Go http.Transport 的 DialTLSContext 会接管非代理 HTTPS 请求的 TLS 连接建立。本文给出带取消条件的自定义拨号写法,并梳理 TLSClientConfig、TLSHandshakeTimeout、ALPN 与 HTTP/2 的配置边界。
-
Go ServeMux 没有命中请求时,先按方法、主机和路径三层拆开排查。本文用 Go 1.22 的模式语法解释尾斜杠、通配符、{$}、最具体模式优先和 405 结果,并给出可观察实际命中的写法。
-
Go 请求超时后仍看到底层连接,通常不是 context.WithTimeout 失效,而是请求上下文、Transport、连接池和服务端属于不同生命周期。本文给出完整的取消链路、Transport 排查方法和连接状态判断清单。
-
Go 的 http.Cookie 通过 SameSite 生成 Set-Cookie 属性,但是否在跨站请求中发送由浏览器决定。本文比较 Strict、Lax、None 的边界,并给出 Go 服务端的配置与排查方法。
-
Go 的 http.Client 会根据重定向目标判断是否转发 Authorization。本文从第一跳与下一跳的请求头基线入手,解释敏感头为何跨域丢失,并给出用 CheckRedirect 限制信任边界的安全写法。
-
区分json.Decoder读取值流时的正常EOF、截断错误与数组输入,提供复用Decoder的循环和单值尾部检查示例,说明预读缓冲、数据处理及关闭责任。
-
Go JSON 出现重复字段时,map、struct 和嵌套对象可能得到不同结果。本文按 encoding/json v1 的处理顺序说明覆盖与合并,并补充 encoding/json/v2 的严格差异和排查清单。
-
Go JSON 数字反序列化后精度丢失,通常是因为 interface{} 默认把 JSON number 解码成 float64。本文用一个小型排障示例说明如何选择 int64、json.Number 和 Decoder.UseNumber,避免订单号、时间戳等大整数被悄悄改写。
-
Go 批量导入后出现 too many open files,通常与 os.File 未及时 Close、循环 defer 作用域过大或并发峰值过高有关。本文给出单文件生命周期、受控并发和 Linux fd 排查方法。
-
os.Rename 不是跨文件系统复制器:源文件和目标文件位于不同挂载或卷时,底层 rename 不能一次完成目录项变更。本文说明如何识别这类错误,并用目标目录内的临时文件实现可控的复制后删除。
-
Go 的 os.MkdirAll 创建目录失败时,问题通常不在 0750 或 0777 本身,而在父目录搜索/写入权限、运行身份、只读挂载或 umask。本文按 PathError 定位受限环节,并给出更稳妥的修复顺序。
-
Go 使用 bufio.Writer 写文件后内容为空,通常不是 os.Create 没有成功,而是数据仍停留在 Writer 的内存缓冲区。本文从实际排障场景出发,说明 Flush、Close、Sync 的职责,给出带错误处理的稳定写法和检查清单。
-
Go 的 csv.Reader 遇到不等长字段时返回 ErrFieldCount,根因通常是 FieldsPerRecord 的固定字段数约束。本文解释 0、正数、负数三种配置的差异,并给出严格校验、容忍变长记录和按业务规则整形的实用写法。
-
Go multipart 解析报 boundary 缺失,通常是 Content-Type 只有 multipart/form-data 却没有 boundary 参数。本文从客户端组包、请求头和服务端解析三个位置排查,并给出 FormFile、ParseMultipartForm 与流式 MultipartReader 的正确用法。
-
Go TLS 握手出现证书主机名不匹配时,重点核对实际校验主机名、SNI 和证书 SAN;本文给出诊断命令、Go 配置示例以及域名和 IP 场景的修复边界。