Go问答技术文章
-
Go 的 json.Decoder 在空输入或读取完流后会返回 io.EOF。本文用计数器和错误分类区分正常结束、空响应、截断 JSON 与语法错误,给出可直接改造的处理代码。385 收藏 -
ring.New(0) 返回 nil 不是初始化失败,而是 container/ring 对空环的明确表示。本文结合官方源码区分 nil 空环与 Ring 零值,说明 n<=0 的处理、可安全调用的方法及两种工程修复方式。385 收藏 -
Go 对字符串执行 for range 时,如果遇到非法 UTF-8,第二个迭代值会是 U+FFFD(utf8.RuneError),下一轮只前进一个字节。本文解释字节索引、连续非法序列、合法 U+FFFD 的歧义,以及 ValidString 和 DecodeRuneInString 的正确用法。385 收藏 -
用 Go 泛型写切片函数时,S ~[]E 可以兼容原始切片、类型别名和底层类型相同的自定义切片。本文用一个保留返回类型的示例讲清约束、推导和边界。384 收藏 -
解释 Go SectionReader.ReadAt 为什么会同时返回有效数据和 io.EOF,拆解区间边界、偏移换算与 ReaderAt 契约,并给出避免丢失尾部字节的正确判断顺序。384 收藏 -
reflect.Value.Comparable 会按动态类型判断值能否安全比较。本文讲清它与 IsValid、CanInterface、Interface、Equal 的正确组合顺序。384 收藏 -
Golang · Go问答 | 4天前 | go · TLS · 网络安全 · VerifyConnection Go InsecureSkipVerify x509.Verify TLS证书校验 证书固定
Go 中 InsecureSkipVerify=true 会跳过默认的证书链和主机名校验。若业务必须接管验证,应在 VerifyConnection 中用自定义 RootCAs、中间证书池和 DNSName 调用 x509.Verify,并可追加 SPKI 指纹约束。384 收藏 -
Scanner.Buffer 并不是把 token 变成无限大。Go 扫描长行时还要考虑 max、初始 cap、换行符空间、Buffer 调用时机和自定义 Split,本文给出排查顺序与 Reader 替代方案。383 收藏 -
Golang · Go问答 | 1星期前 | channel · goroutine · pprof · Go问答 · context pprof 有界队列 go goroutine泄漏 无界channel
Go 原生 channel 容量固定,所谓无界 channel 多由中转 goroutine 与无限 slice 构成。本文用 goroutine profile 定位阻塞堆栈,并迁移到有界队列、context 取消与 WaitGroup 退出等待。383 收藏 -
用最小配方修复 iter.Seq2[T,error] 的错误返回链,覆盖数据源、转换适配器、消费端与 Pull2 的常见吞错位置。383 收藏 -
讲清 Go crypto/rand.Int 的 [0,max) 参数边界,给出闭区间换算、big.Int 写法、随机源选择和错误处理清单。382 收藏 -
从 go.mod 的 go 指令、完整模块图与裁剪模块图对比入手,定位 module graph pruning 暴露的依赖缺失,补足显式 require 并用 tidy、兼容检查和构建验证修复边界。380 收藏 -
Go modules 的 replace 适合本地联调、临时修复和 fork 迁移,但必须和 require 配对,并确认它只在当前主模块生效。本文用模块解析、依赖图、测试和发布清理四个检查点,整理一套可回滚的替换方案。379 收藏 -
本文用 database/sql 的查询函数示例说明 rowslife 的工程化含义:如何限定 Rows 的所有权、关闭时机、Next/Scan/Err 判断和 Context 取消边界,避免半消费结果集泄漏到业务层。378 收藏 -
Go HTTP客户端的超时并不等于连接立即释放。本文从总时限、阶段超时、响应体关闭和连接池排队四个角度定位连接长期占用,并给出可直接迁移的配置与检查清单。378 收藏