Go问答技术文章
-
Go 的 net/http.Transport.MaxResponseHeaderBytes 用来限制客户端接收的响应头总字节数。本文说明正数阈值、零值默认行为、超限错误与 Transport 复用时的配置边界。150 收藏 -
Go Validator 的标签语法会把逗号当作规则分隔符、把竖线当作 OR 分隔符。本文说明为什么它们不能直接写进参数,以及如何用 0x2C 和 0x7C 稳定表达要排除的字符。150 收藏 -
Gonum stat.Correlation 遇到常量序列时,分母中的标准差为零,相关系数没有定义。本文用最小示例解释 NaN 的来源,并给出长度、权重和有效方差检查方案。150 收藏 -
Go 验证码既要在生产环境使用安全随机源,又要让单元测试可重复。本文用一个可注入的随机整数接口,把 crypto/rand 与固定序列测试替身分开,并覆盖长度、字符表和错误处理边界。150 收藏 -
strconv.ParseInt 没有需要关闭的资源。批量解析后内存增长,应区分累计分配、当前堆和业务留存;通过有界错误摘要示例说明 NumError、输入文本和错误缓存的生命周期。150 收藏 -
通过 Linux 最小示例封装 net.ListenConfig.Control,说明底层参数入口、两类错误传播、文件描述符范围和监听器关闭责任。150 收藏 -
strings.Builder 已使用后不能按值复制,副本继续写入可能触发异常。本文定位参数、结构体和切片中的隐式复制,给出指针协作与字符串前缀重建两种迁移方式,并解释长度为零和未触发 panic 的误区。149 收藏 -
Go ServeMux 出现路由冲突时,先沿注册阶段的 panic 栈找到两个 pattern,再比较方法、主机和路径的具体程度;交换注册顺序不能解决同等具体的冲突。149 收藏 -
Go unsafe.Pointer 本身不是 GC 失效的同义词,真正危险的是把地址转成 uintptr 后脱离指针语义长期保存,或在外部调用边界提前失去对象引用。本文按转换、生命周期、cgo 与排查边界说明安全写法。149 收藏 -
Go 的 StdEncoding 会接受部分尾部填充位不规范的 Base64 输入。本文用 Zh== 对比 Zg==,说明 base64.Strict 的拒绝边界、错误处理方式和兼容取舍。149 收藏 -
goquery 的 Text 会递归读取选中节点及其后代文本节点,所以父元素中的标题、段落和嵌套标签文字都会被合并。本文说明它的实现语义、常见误解和可控提取方式。148 收藏 -
解释 Go time.AfterFunc 的回调与 Timer.Stop 同时发生时如何判断返回值,并用 done 或 WaitGroup 协调回调完成与资源清理。148 收藏 -
Go io.Pipe 的写端提前失败时,普通 Close 会让读端只看到 EOF。本文按读写两端的职责解释 CloseWithError、n 与 err 的处理方式,以及关闭顺序和 ErrClosedPipe 的边界。148 收藏 -
Go Transport 请求后连接池立即变空,通常不是连接池失效,而是连接仍在使用、响应体未读完或关闭、Keep-Alive 被禁用、空闲超时过短,或者 Transport 被重复创建。本文按状态、代码和配置边界给出排查顺序。148 收藏 -
Go 的 crypto/rand.Read 与普通 io.Reader 不同,它会通过 io.ReadFull 填满整个目标切片。本文解释短读取契约的差异、正确生成随机字节的写法,以及自定义 Reader 时应该如何处理 n 和 error。148 收藏