Go问答技术文章
-
Go 的 math.Float32frombits 是按 IEEE 754 位模式把 uint32 重解释为 float32,不等同于 float32(x) 的数值转换。本文用对比代码说明两者差异,并给出按字节序组装输入、处理特殊值和保持可逆性的实用边界。431 收藏 -
http.Client.Timeout 的零值表示不设总超时,因此请求可能一直等待连接、响应头或响应体。本文用一个可解释的请求预算说明根因、修复写法和阶段边界。144 收藏 -
Go http.Server.Shutdown 一直等待时,不要先改成 Close。先用 ConnState 找到仍在处理请求的连接,再给 Shutdown 加超时,并单独处理 WebSocket 等 hijacked 连接。126 收藏 -
用 Go list -m all 查看当前模块构建中实际参与选择的依赖版本,并结合 -json、-f、-u 识别替换模块、间接依赖和可用升级。234 收藏 -
Go http.Server.ReadHeaderTimeout 用于限制请求头读取时间,适合收敛迟迟发不完整请求头的连接。本文给出显式 Server 配置、超时字段边界、慢请求验证方法,以及 ReadTimeout、WriteTimeout、IdleTimeout 和 MaxHeaderBytes 的配合清单。437 收藏 -
Go httptrace.ClientTrace 可以把一次 HTTP 客户端请求拆成 DNS 查询、连接建立和连接复用等观测阶段。本文解释 DNSStart/DNSDone 与 ConnectStart/ConnectDone 的计时边界,并给出并发安全的请求级记录方式。224 收藏 -
Go embed 读不到文件时,先区分空的 embed.FS、相对包目录错误和目录模式排除隐藏文件。本文用最小示例说明指令位置、变量类型、all: 前缀与 go list 检查边界。247 收藏 -
Go filepath 使用目标操作系统的路径规则。本文区分构建宿主和目标产物,给出路径观察示例,并说明 GOOS、GOARCH、构建约束与文件路径、URL 路径的处理边界。205 收藏 -
Go 将 CGO_ENABLED 设为 0 后,报错不一定来自链接阶段。本文按文件选择、编译和链接三层拆分现象,使用 go env 与 go list 判断 cgo 文件是否被排除,再根据外部符号、目标平台和预编译库选择修复方向。462 收藏 -
Go cgo 报 pkg-config 找不到系统库时,先区分工具、.pc 元数据、头文件和链接器问题,再用 PKG_CONFIG_PATH、模块名与构建环境逐层排查。383 收藏 -
Go mod tidy 删除依赖后构建失败,通常是源码依赖图与实际构建输入不一致。本文从 tidy 差异、导入路径、生成代码、vendor、workspace 和 CI 入口逐层定位并给出可复查的修复方案。125 收藏 -
Go 本地 replace 不生效时,应核对主模块、模块身份、版本范围、本地目录基准及 go.work 覆盖。本文用双模块联调配置说明排查方法和迁回正式依赖前的收尾事项。244 收藏 -
Go work sync 没有更新某个模块的 go.sum,通常不是命令失效,而是它同步的是 workspace build list 到各模块的 go.mod;workspace 独有的校验记录由 go.work.sum 保存。本文按文件职责和命令边界说明如何判断结果。436 收藏 -
Go 项目出现 vendor inconsistent dependencies 时,通常是 go.mod 已变更而 vendor/modules.txt 仍是旧清单。本文按模块图、go mod vendor 和离线构建三个边界,给出恢复一致的排查顺序。449 收藏 -
Go 私有模块可用 GOPRIVATE 与 GONOSUMDB 排除公共校验数据库查询,同时保留公开依赖校验。本文区分代理和校验职责,并给出直连私仓及企业代理两种配置示例。358 收藏