Go问答技术文章
-
Go DNS 查询失败时,用 errors.As 找到 *net.DNSError,再区分 IsNotFound、Timeout 与 Temporary,决定停止、有限重试还是继续排查。391 收藏 -
讲清 iter.Pull2 的 next、stop 与外部 Err 查询顺序,用单次键值源示例避免提前退出后的资源泄漏、漏错和并发误用。391 收藏 -
Go 接口里装入 nil 指针后,接口本身通常不等于 nil。本文从动态类型与动态值解释原因,并给出类型断言、反射判断和返回值设计方案。390 收藏 -
unique.Handle 的相等性遵循创建它的 T 值的 Go == 语义;只有当 T 本身是指针时,Handle 相等才可解释为指针值相等,不能泛化为任意原始对象地址相同。390 收藏 -
Go csv.FieldPos 的 column 按 UTF-8 字节计算,不按字符计算。本文用中文 CSV 说明字段起点、解析错误和展示层字符位置如何分开处理。389 收藏 -
Go 将数据库 NULL 直接扫描到 string 会失败。本文用 sql.NullString、sql.Null[string] 与 COALESCE 对比字段适配方案,说明如何保留空值语义并覆盖回归边界。388 收藏 -
说明 Go unique.Handle 的 comparable 边界,并给出含切片结构体按内容生成可比较键的安全做法与常见误区。388 收藏 -
Go 服务端 Handler 通常不需要手动关闭 http.Request.Body,HTTP Server 会在请求结束时负责收尾;真正必须由调用方关闭的是客户端 Response.Body。本文按生命周期拆开这两个容易混淆的责任边界。387 收藏 -
Go 测试出现 testexit、日志突然中断或清理回调未执行时,先区分 os.Exit、runtime.Goexit 与测试失败,再用子进程隔离验证退出码,并让 TestMain 保留 m.Run 的标准结果。387 收藏 -
Golang · Go问答 | 3星期前 | 错误处理 · 文件上传 · Go问答 · Go multipart.Reader 临时上传文件 上传失败清理 multipart.Part Form.RemoveAll
Go multipart.Reader 流式上传要把临时文件当作未提交资源管理:单个 Part 写入失败立即删除当前文件,请求后续部件失败则回滚已落盘清单;使用 ReadForm 时改用 Form.RemoveAll。387 收藏 -
Go build tags 同时写平台和自定义条件时,文件未被选中通常不是 go build 失效,而是 &&、||、-tags 传值或文件名隐式约束叠加后的结果。本文用 go list 逐层排查。386 收藏 -
Golang · Go问答 | 4星期前 | 连接池 · 故障排查 · database/sql · Go问答 · Go 数据库连接池 QueryContext rows.Close Rows.Err sql.Rows
Go 查询拿到 sql.Rows 后如果在扫描中途返回却没有 Close,底层连接可能长期处于 InUse,达到 MaxOpenConns 后新请求开始等待。本文给出统一关闭、检查 rows.Err 和用 DB.Stats 定位连接占用的方法。386 收藏 -
本地 go work use 能找到 sibling 模块,不代表 CI 也拥有同样的目录。本文从相对路径、检出范围和 GOWORK 状态排查原因,并区分工作区联调与单模块消费者构建。386 收藏 -
Golang · Go问答 | 6天前 | 标准库 · HTTP服务 · 可观测性 · Go问答 · Go expvar http.ServeMux expvar.Handler /debug/vars 运行指标
解释 Go expvar.Handler 与默认 /debug/vars 的关系:两者输出同一份全局变量,区别在路由注册方式、ServeMux、访问路径和方法限制,并给出自定义挂载、访问控制与 httptest 验证示例。386 收藏 -
Go 使用 database/sql.Rows 时,连接数持续升高往往与结果集未关闭、迭代错误未检查或事务未结束有关。本文用 Rows 生命周期、DB.Stats 和退出路径清单定位并修复连接泄漏。385 收藏