Go问答技术文章
-
Go 处理大文件时,Scanner 和 Reader 都能流式读取,但选择依据不是文件总大小,而是单条记录长度、分隔符语义和错误控制需求。本文给出 Scanner.Buffer、Reader.ReadString 及 EOF 处理的落地判断。363 收藏 -
Squirrel 的 SelectBuilder 采用不可变 builder 语义,Where、OrderBy 等方法返回新值。本文说明为什么必须接收链式返回值,并给出基础查询、状态条件和排序分页的复用写法。363 收藏 -
Go JetStream 的 Ack 发送确认但不等待服务端回复,DoubleAck 会等待回复。通过处理函数与两张结构图,说明确认返回值、超时状态、业务幂等及方法选择。361 收藏 -
Go archive/zip 遇到非内置压缩方法时,可以在 Reader 上注册自定义 Decompressor。本文说明方法编号映射、io.ReadCloser 返回值、File.Open 选择解压器以及校验和和并发资源边界。359 收藏 -
Go 流式响应写入后迟迟不到客户端,通常不只是少调用一次 Flush。本文从 http.Flusher、响应包装器、代理缓冲和 ResponseController 四个层面整理处理方式,并给出可回退的排障清单。359 收藏 -
sync.Cond.Wait 返回只代表当前 goroutine 被唤醒并重新拿到 Locker,不代表共享条件仍然成立。本文从解锁、唤醒、重新加锁三个状态说明为什么必须用 for 循环检查条件,并给出条件读写、Signal 与排障边界。359 收藏 -
说明 Go x/image/font/opentype 中 Font、Face 和字体源数据的生命周期区别,给出多个字号分别创建 Face、并发使用与逐个 Close 的资源管理写法。358 收藏 -
Go HTTP 客户端超时并不只有一个开关。本文把一次请求拆成 DNS、TCP 连接、TLS 握手、响应头和响应体阶段,说明 http.Client.Timeout、DialContext、TLSHandshakeTimeout、ResponseHeaderTimeout 与请求上下文各自负责什么,并给出带阶段追踪的可复用配置。358 收藏 -
Go 私有模块可用 GOPRIVATE 与 GONOSUMDB 排除公共校验数据库查询,同时保留公开依赖校验。本文区分代理和校验职责,并给出直连私仓及企业代理两种配置示例。358 收藏 -
Go 1.27 的 goroutineleak 画像只报告运行时能证明永久阻塞的一部分 goroutine。本文按 Lookup 参数和 HTTP 路径说明采集方式,并解释全局引用、可运行 goroutine、IO 阻塞及偶发时序为什么不会出现在画像中。357 收藏 -
Go SQLX StructScan 报 missing destination name,通常不是数据库连接失败,而是查询返回列无法和目标结构体字段映射。本文用一个小型订单查询说明 db 标签、SQL 别名、Mapper 和 Unsafe 的正确边界。357 收藏 -
Gonum mat.Dense 的 Slice 返回的是共享底层数据的矩阵视图,不是独立副本。本文用小矩阵说明别名如何传播、半开区间怎样计算,以及什么时候应该改用 DenseCopyOf。356 收藏 -
用 math/rand/v2 的 PCG 和两个 uint64 种子创建本地随机源,说明 Uint64 序列复现、并发实例边界和 MarshalBinary 状态恢复方法。355 收藏 -
Go 的 net.Resolver.Dial 只服务于 Go 内置 DNS 解析器;如果当前解析路径选择系统解析器,设置 Dial 也不会接管请求。本文说明 PreferGo、Dial 和实际调用对象之间的关系,并给出排障清单。355 收藏 -
os.RemoveAll 对不存在路径返回 nil 是设计好的幂等语义,但权限、路径竞态或部分删除失败仍会返回错误。本文用清理函数说明如何保留原始错误并正确处理回滚。355 收藏