Go问答技术文章
-
Go modules 下载依赖超时时,先区分代理、版本库直连和校验服务,再按回退规则切换 GOPROXY,避免把关闭校验当成万能方案。437 收藏 -
Go 读取稀疏 tar 条目时,Header.Size 表示逻辑文件大小,稀疏空洞会由 Reader 以 NUL 字节呈现。本文区分逻辑长度与归档实际载荷,说明如何流式读取、设置大小上限,并避免手工计算下一个条目的偏移。437 收藏 -
Go 的 FindStringSubmatchIndex 返回 -1 时,通常表示对应可选捕获组没有匹配,而不是整体正则失败。本文拆解 nil、-1,-1、空匹配和字节偏移的区别,并给出安全读取索引的写法。437 收藏 -
Go HTTP 请求变慢时,httptrace.ClientTrace 可以把 DNS、连接、TLS、写请求和首字节等阶段拆开记录。本文给出标准库用法、复用连接判断、回调缺失分析和超时排查边界。437 收藏 -
Go 类型别名保留原类型身份,定义类型则引入新的身份。结合编号类型示例说明直接赋值、显式转换、方法集和业务校验的区别,并分析接口迁移与领域隔离的取舍。437 收藏 -
Go http.Server.ReadHeaderTimeout 用于限制请求头读取时间,适合收敛迟迟发不完整请求头的连接。本文给出显式 Server 配置、超时字段边界、慢请求验证方法,以及 ReadTimeout、WriteTimeout、IdleTimeout 和 MaxHeaderBytes 的配合清单。437 收藏 -
go mod tidy 负责按源码导入关系整理 go.mod、go.sum 和模块依赖,不负责关闭文件、HTTP 连接或 goroutine。本文区分模块缓存与运行时资源,给出依赖观察、缓存清理和程序资源泄漏的排查方法。437 收藏 -
围绕 Go net/http 的 Response.Body.Close、EOF、Transport 连接池和 HTTP/1.x 复用边界,整理响应体未完全读取时的排查与处理方案。436 收藏 -
Go HTTP/1 服务端默认可能先消耗未读请求体再写响应,ResponseController.EnableFullDuplex 可让 handler 按需交替读取请求体与写出响应。本文说明调用位置、ErrNotSupported 处理、Flush 的职责,以及 HTTP/2 和代理缓冲的边界。436 收藏 -
Go 1.27 及更高版本中,go mod tidy 会整理多个 require 块。本文区分块布局、间接标记和模块版本变化,说明如何用 -diff 判断是否只是格式整理。436 收藏 -
Go work sync 没有更新某个模块的 go.sum,通常不是命令失效,而是它同步的是 workspace build list 到各模块的 go.mod;workspace 独有的校验记录由 go.work.sum 保存。本文按文件职责和命令边界说明如何判断结果。436 收藏 -
解释 Go 循环中的 defer 为什么不会在每轮迭代结束时执行,并给出局部函数封装资源释放的实用写法。436 收藏 -
Go ast.Inspect 返回 false 只跳过当前子树。本文用原创函数声明筛选示例,解释 found 标记、nil 退出通知,以及用 ast.Preorder 和 break 结束迭代的区别。436 收藏 -
Go 的 http.Client 跨主机重定向后看不到 Authorization,通常是默认的敏感头保护。本文用 CheckRedirect、可信 Origin 和手动跟随策略,给出安全可控的处理方式。435 收藏 -
Go RawURLEncoding 不接受等号,需按发送方选择 URLEncoding 或无填充配置。本文给出兼容函数、预期样本与基准方法,说明错误处理和适用边界。435 收藏