Go语言技术文章
-
Go 测试临时目录在 Windows 清理失败,应先排查文件句柄、后台任务退出和 Cleanup 顺序。本文用完整测试示例说明停止与完成信号,明确 TempDir 自动删除的职责边界。226 收藏 -
Go HTTP 客户端连接复用异常时,先检查 resp.Body 是否读到 EOF 并及时关闭,再用 httptrace.GotConn 的 Reused 字段观察 Transport 是否复用了连接。本文给出集中式读取模板、状态码场景和异常边界。282 收藏 -
Go module graph 出现同一模块多个版本时,不能只看 go.mod。本文用 go mod graph 追踪依赖边,再用 MVS、go list -m all、go mod why -m 和 replace、exclude、go.work 边界判断最终 selected version。482 收藏 -
Go 文件没有参与编译时,不要先反复清理缓存。用 go env 和 go list -json 查看当前模块、平台、构建标签以及 GoFiles、IgnoredGoFiles,再按文件名后缀、//go:build 和 -tags 修正文件选择条件。253 收藏 -
Go cgo 构建遇到 undefined symbol 时,先用 go build -x 找到实际链接输入,再按 -L 搜索路径、-l 库名、依赖顺序和 pkg-config 逐项定位。本文只讨论 #cgo LDFLAGS 与链接器输入。441 收藏 -
Go clean -cache 后构建仍像使用旧文件,通常不是缓存没有清干净,而是实际构建输入、模块目录、测试缓存、cgo 外部库或旧二进制路径出了偏差。本文给出一套从 go env、go list 到 -a 和 GODEBUG 的排查顺序。128 收藏 -
go install 带版本后仍调用旧工具,应分开确认版本来源、GOBIN 安装落点与 PATH 命令入口。本文说明同名文件、别名、终端环境和二进制模块信息的排查方法。251 收藏 -
用 slog.Level.UnmarshalText 解析 Go 日志级别配置,区分空值默认、非法值错误和数值偏移,给出可复用的配置加载函数。475 收藏 -
Go 文件上传时不要只相信扩展名或客户端 Content-Type。本文说明 http.DetectContentType 最多读取前 512 字节的工作边界,给出保留完整文件流的实现,并演示如何在 multipart 文件 Part 上接入允许类型判断。231 收藏 -
Go pprof HTTP 地址打开为空时,先区分服务、路径和 mux 三层问题。本文从 net/http/pprof 的匿名导入讲起,说明 DefaultServeMux 与自建 ServeMux 的注册差异,并给出目录页、heap 和 CPU profile 的排查顺序。329 收藏 -
Go database/sql 的连接等待不等于请求超时。本文用分阶段计时结合 DBStats 增量,区分获取连接与操作阶段失败,说明 MaxOpenConns、共享统计和上下文预算的判断边界。470 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · 错误处理 · go · 数据库 · Go database/sql sql.ErrNoRows QueryRow QueryRowContext
QueryRow 找不到记录并不是 QueryRow 立即报错,而是把错误延迟到 Scan。本文说明 sql.ErrNoRows 的来源,比较 QueryRow 与 Query 的适用场景,并给出仓储层错误转换和边界处理方式。186 收藏 -
Go 上传请求在请求头发出后长时间没有发送请求体,通常要先检查 Expect: 100-continue 与 http.Transport.ExpectContinueTimeout,而不是直接调大响应头超时。本文按服务器响应、零值语义和请求上下文给出排查与配置取舍。109 收藏 -
Go HTTP 请求变慢时,httptrace.ClientTrace 可以把 DNS、连接、TLS、写请求和首字节等阶段拆开记录。本文给出标准库用法、复用连接判断、回调缺失分析和超时排查边界。437 收藏 -
Go fmt 出现 %!s 时,应先区分类型不匹配、参数缺失及自定义格式化异常。本文对比 %s、%d、%v 等动词,给出混合字段日志写法与参数顺序排查要点。377 收藏