Go问答技术文章
-
解释 Go Gock 的 Persist 为什么会影响后续测试,区分默认 mock、Times 次数限制与持久 mock,并给出 Off 和 RestoreClient 的测试隔离写法。428 收藏 -
Go 中声明但没有 make 的 channel 值是 nil,发送、接收和 range 都不会找到通信对象,因此会永久阻塞。本文对比 nil channel、空缓冲 channel 和已关闭 channel,给出初始化、nil 防护以及 context 超时的实用写法。427 收藏 -
Go 1.25 引入的 os.Root.Lchown 可以在受限目录内修改符号链接自身的数字 uid/gid。本文区分 Lchown 与 Chown 的作用对象,给出错误处理和跨平台排查要点。426 收藏 -
Go 循环中直接 defer file.Close 会把关闭动作推迟到外围函数返回。本文用单文件函数隔离资源生命周期,并说明读取错误、关闭错误和文件描述符复查边界。426 收藏 -
math.Frexp返回归一化分数与二进制指数,math.Ldexp可重组这对参数。本文提供最小Go示例,解释分数区间、负数与倍率调整,并列出零、无穷和NaN的特殊约定,避免与十进制表示或原始位字段混淆。426 收藏 -
KSUID由大端时间戳和随机载荷组成,27字符Base62文本保留了固定二进制值的字典序。本文用Go示例说明文本排序、字节排序与大致生成时间的关系,并解释时钟偏差、同一时间戳和游标截断的边界。426 收藏 -
解释 log/slog ReplaceAttr 处理嵌套 Group 时 groups 与 a.Key 的边界,给出按完整路径脱敏的写法,并区分 Group、LogValuer、Any 和 Handler 配置范围。425 收藏 -
Go x/net/html/charset.DetermineEncoding 返回的 certain 不是“有没有识别出编码”,而是“结果是否来自可靠声明”。本文拆解 BOM、Content-Type、meta 扫描、UTF-8 推断与 windows-1252 回退的顺序,给出网页乱码排查时的使用方式。425 收藏 -
Go x/image/riff 的 chunkLen 只表示块数据长度;当数据长度为奇数时,RIFF 还会补一个 padding byte。因此下一个块偏移要同时考虑 8 字节头部、数据区和对齐字节。425 收藏 -
Go crypto/tls 的 CurvePreferences 类型是 []tls.CurveID,列表顺序不会直接决定协商优先级。本文围绕 MLKEM1024 说明 nil 默认值、显式集合、GODEBUG 与客户端服务端交集的排错边界。424 收藏 -
Go rtreego 的空间维数不是可忽略的元数据:构造 Rect 时维数不一致会返回 DimError,距离查询遇到不一致维数可能触发 panic。本文按 API 边界说明如何统一检查 Rtree、Spatial、Point 与 Rect 的维度。424 收藏 -
Golang · Go问答 | 6天前 | 性能排查 · 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 收藏 -
区分json.Decoder读取值流时的正常EOF、截断错误与数组输入,提供复用Decoder的循环和单值尾部检查示例,说明预读缓冲、数据处理及关闭责任。422 收藏 -
Go 的 unicode.IsNumber 判断的是 Unicode 数字类别 N,不等于只判断 0 到 9,也不等于能识别所有中文汉字数字。本文对比 IsNumber、IsDigit 与汉字数字的边界,并给出按业务规则筛选 rune 的写法。422 收藏