Go问答技术文章
-
Go rtreego 的空间维数不是可忽略的元数据:构造 Rect 时维数不一致会返回 DimError,距离查询遇到不一致维数可能触发 panic。本文按 API 边界说明如何统一检查 Rtree、Spatial、Point 与 Rect 的维度。424 收藏 -
通过 encoding/json 的结构体、指针和 map 示例,拆开 JSON null 与字段缺失的输入差异,说明如何保留、清空和判断字段状态。424 收藏 -
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。424 收藏 -
解释 Go 文件原子替换为什么仍会在异常重启后丢失,并给出文件 Sync、Rename 与父目录 Sync 的完整耐久写入顺序和可复用代码。423 收藏 -
Go 项目把 interface API 迁移到泛型时,不能只看代码是否编译。本文用共享测试表、最小泛型约束和并行适配层,比较旧接口与泛型实现的输出、错误、零值和边界行为,帮助你分阶段完成迁移并保持测试等价。423 收藏 -
Go 本地 replace 在 CI 失败,常见原因是主模块选择不同或替换目录缺失。本文解释相对路径基准、检出布局、Docker 构建上下文及发布边界,并给出诊断命令。423 收藏 -
runtime.ReadMemStats 统计的是 Go 运行时的分配与保留情况,不等于操作系统看到的进程 RSS。本文用字段对照和 Linux 最小采集示例说明差异来源与排查路径。423 收藏 -
Golang · Go问答 | 1星期前 | 性能排查 · net/http · HTTP客户端 · Go问答 · Go net/http 连接复用 close Response.Body HTTP/1 http.Response
Go 1.27 的 HTTP/1 Transport 会在 Response.Body.Close 后异步排空未读响应体,但只在保守的大小和时间范围内尝试。本文区分 Close、业务读取和连接复用,给出只看状态码时的写法及延迟排查边界。423 收藏 -
Go 1.27 的 vet 可能提示 %w 包装了错误类型指针。本文解释值接收者、动态类型与 errors.Is/As 的关系,并给出修复和复查方法。423 收藏 -
Go regexp.Regexp.FindReaderIndex 用 io.RuneReader 搜索流式输入时,返回值是匹配区间的字节偏移而不是字符下标。本文说明 m[0]、m[1]、nil 和超前读取的含义,并给出选择其他 API 的边界。423 收藏 -
Go runtime.KeepAlive 只负责在指定调用点保持对象可达,不会修复数据竞争或非法指针。本文按资源句柄、终结器、unsafe/cgo 与并发边界拆解结果不稳定的排查方法。423 收藏 -
Go 1.27 已支持普通泛型方法,但接口方法仍不能声明自己的类型参数。本文用最小签名拆解报错来源,并给出工具链、go.mod、包级函数和适配器的选择方法。422 收藏 -
Go 的 time.Parse 使用参考时间表达布局,-0700 代表无冒号的数值时区偏移模板,而不是固定的西七区。本文用输入对照和最小示例说明如何选择 -0700、-07:00 与 Z07:00。422 收藏 -
区分json.Decoder读取值流时的正常EOF、截断错误与数组输入,提供复用Decoder的循环和单值尾部检查示例,说明预读缓冲、数据处理及关闭责任。422 收藏 -
Go 的 unicode.IsNumber 判断的是 Unicode 数字类别 N,不等于只判断 0 到 9,也不等于能识别所有中文汉字数字。本文对比 IsNumber、IsDigit 与汉字数字的边界,并给出按业务规则筛选 rune 的写法。422 收藏