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