Go问答技术文章
-
Gonum quad.Hermite 面向带 e^(-x²) 权函数的全实数积分。本文解释上下限、节点权重、函数闭包和标准正态期望变量变换之间的关系,帮助排查重复乘权和缩放因子遗漏。353 收藏 -
Go crypto/rand.Prime 接收随机源和二进制位数,成功返回随机素数,bits 小于 2 或底层随机读取失败时返回错误。本文用一个小函数说明位数单位、错误传播,以及 Go 1.26 之后 Reader 参数的实际边界。353 收藏 -
Go container/list 的 Remove 会返回被删除节点的 Value。本文说明 any 类型断言、删除后的节点边界,以及遍历删除时保存 Next 的写法。353 收藏 -
Go bytes.Buffer 判断读取位置是否到末尾,核心看未读长度 Len() 是否为 0;循环读取时还要结合 n 和 io.EOF,区分空切片、容量和真正的读取结束。353 收藏 -
testing/quick.Check 的随机失败要靠可复用的随机源来复现。本文说明如何记录 CheckError.In、Count 和 seed,并保持 Config、Generator 与迭代上限不变,稳定重跑同一组输入。352 收藏 -
Go ZIP 文件名乱码通常不是压缩内容损坏,而是文件名字节、UTF-8 标志和解压工具的本地编码解释不一致。本文从 archive/zip 的 Writer、Reader 和 NonUTF8 语义出发,给出创建端与旧包读取端的处理边界。352 收藏 -
Go strings.Reader 的 Read 会推进当前位置,而 ReadAt 按显式字节偏移读取且不会改变后续 Read 的位置。本文用 Len、Size 和短读错误说明两者的边界。351 收藏 -
RegisterOnShutdown 适合快速发出协议关闭通知,不应在回调里等待清理完成。本文用 channel、WaitGroup 和超时上下文组织可控的异步退出流程。351 收藏 -
计算接近零的 e^x-1 时,直接写 math.Exp(x)-1 可能丢失有效数字。本文用一个小型增长率场景说明消减误差,再给出 math.Expm1 的用法、特殊值边界和选择清单。351 收藏 -
从 BitsSequence、BitsMachineID 和 TimeUnit 三个参数出发,计算 Go sonyflake 的单窗口容量、理论发号速率与生命周期,给出配置示例和参数取舍方法。351 收藏 -
Go range 遍历结构体切片时,第二个变量通常是当前元素的值副本,直接修改它不会回写原切片。本文用一个小型批处理示例说明原因,并比较按索引回写、指针遍历和只读副本的适用边界。351 收藏 -
Go 里 os.Open 返回成功并不代表后续 File.Read 一定成功。本文按 Open、Read、Close 三个阶段拆开权限错误,使用 PathError、errors.Is 和 os.IsPermission 定位真正失败的操作,并给出不会覆盖主错误的写法。350 收藏 -
Go 1.27 的 response file 解析属于 compile、link、asm、cgo、cover、pack 等底层工具,不是 go build 外层任意参数的通用语法。带空格的参数必须按 GCC-compatible 规则用单双引号包住,并先确认到底是哪一层在解析。350 收藏 -
Go 流式响应设置写截止时间后仍像是阻塞,通常是卡在上游取数、通道或锁等待,或者截止时间没有穿透 ResponseWriter 包装层。本文拆开生成、写入、刷新和代理缓冲四个边界,并给出可退出的处理器写法。349 收藏 -
Go 服务健康检查失败而业务接口仍能访问,通常不是业务处理器坏了,而是探针路径、监听地址、状态码或依赖检查边界没有分开。本文用一个最小 net/http 服务拆开存活、就绪和业务依赖检查,并给出按现象定位与部署验收的方法。349 收藏