Go问答技术文章
-
Go Transport 的 MaxConnsPerHost 限制拨号、活动和空闲连接总数,达到上限可能让请求等待。本文用 HTTP/1 示例解释共享池、trace 信号和响应体释放,并说明 HTTP/2 与调参边界。165 收藏 -
Go 的 net/http.Client.Timeout 使用零值时代表不设总超时,连接、重定向和读取响应体都可能没有统一时间预算。本文解释零值语义,并给出 Client、Context 与 Transport 超时的分层写法。216 收藏 -
Golang · Go问答 | 1个月前 | HTTP · go · sse · net/http · net/http WriteTimeout SSE IdleTimeout Go HTTP 长连接空闲超时
Go net/http 的 IdleTimeout 主要管理 keep-alive 连接等待下一个请求,并不是 SSE 消息间隔计时器。本文区分 IdleTimeout、WriteTimeout、Flush、心跳和中间代理策略,给出一套可落地的 SSE 排查与处理方式。442 收藏 -
Go HTTP 服务的 ReadHeaderTimeout 限制请求头读取,ReadTimeout 限制整个请求读取。本文说明零值回退与配置迁移,给出服务示例及日志定位方法,区分读取失败与业务耗时。188 收藏 -
Go build 标签不生效时,文件名后缀与显式约束需要共同满足。本文用互补实现和 go list 文件归属说明平台后缀、自定义标签、测试文件及显式文件入口的区别。202 收藏 -
Go plugin 无法跨任意构建环境直接复用。本文按错误阶段解释工具链、共享依赖源码、构建参数和动态库差异,给出统一构建、符号加载与成套升级回退的方法。418 收藏 -
Go 项目把 interface API 迁移到泛型时,不能只看代码是否编译。本文用共享测试表、最小泛型约束和并行适配层,比较旧接口与泛型实现的输出、错误、零值和边界行为,帮助你分阶段完成迁移并保持测试等价。423 收藏 -
Go 程序在 arm64 上变慢时,不能只看一组 benchmark 就认定是编译器问题。本文先固定代码、输入和环境,再用 amd64/arm64 对照、同机 Go 工具链对照、CPU profile 和指令集实验,把性能下降归因到业务代码、标准库、运行时或编译器生成代码。231 收藏 -
Go 交叉编译时报找不到系统库,通常不是 GOOS 或 GOARCH 本身写错,而是项目进入了 cgo 路径却没有目标平台的 C 编译器、头文件或链接库。本文按纯 Go 与 cgo 两条边界给出排查和构建方案。445 收藏 -
Go json/v2 迁移不能只替换 import。本文区分工具链升级与语义切换,梳理字段匹配、空值、omitempty 和严格输入风险,给出兼容选项示例及发布回退清单。384 收藏 -
Go 1.22 改变了 for 循环变量的作用域,旧版测试尤其是 t.Parallel 子测试可能从误通过变成真实失败。本文用最小配方解释 go.mod、GOEXPERIMENT=loopvar 与 go vet 的协作方式,帮助你安全完成迁移。266 收藏 -
Go 1.16 将 io/ioutil 的能力分散到 io 和 os。本文按函数职责整理 ReadFile、ReadDir、ReadAll、临时文件等迁移方式,并说明 DirEntry 与 FileInfo 的兼容边界。151 收藏 -
Go toolchain 自动下载失败时,可以根据项目是否允许升级,选择 GOTOOLCHAIN=local 或 go1.x.y+path 固定本地工具链,并检查 go.mod、go.work 与 PATH 中的版本关系。103 收藏 -
Go 依赖升级后出现接口不兼容,先不要盲目回退。本文用 go.mod、go list -m、go mod graph 和编译错误把问题分成导入路径变化、公开 API 断裂与间接依赖切换三类,再给出回退、迁移和兼容适配的选择方法。176 收藏 -
Go 二进制在 Alpine 启动失败时,应读取 ELF 架构、解释器和动态库需求,区分平台错误与 glibc/musl 不匹配。本文给出 readelf 排查命令,以及纯 Go 构建、musl 重编译和 glibc 运行环境的选择边界。374 收藏