Go问答技术文章
-
Go strconv.Atoi 已经把字符串按当前平台 int 宽度解析。遇到溢出或非法文本时,应先检查 error,再做业务范围判断,最后才使用转换结果。137 收藏 -
Go testing.F 找不到失败语料时,先看 testdata/fuzz/FuzzName,再区分只读包回退到 GOCACHE/fuzz 的情况,并用 FuzzName/hash 精确重跑。136 收藏 -
Golang · Go问答 | 5天前 | 标准库 · 并发安全 · HTTP · 源码分析 · Go问答 · Go 闭包 连接池 net/http http.Transport.Clone TLS配置
http.Transport.Clone 会创建新的 Transport,并让连接池、锁和连接计数保持独立;但回调函数、接口值及 tls.Config 浅拷贝内部引用的对象仍可能共享,需要按隔离目标主动替换。136 收藏 -
Scanner.Bytes 返回的是当前 token 的字节切片视图,不保证在下一次 Scan 后继续有效。本文用一个小工具复现变化原因,并比较即时处理、bytes.Clone、append 复制与 Text 的适用边界。136 收藏 -
Go 的 gzip 压缩级别是在 CPU 消耗、响应体大小和端到端延迟之间做取舍。本文用 NewWriterLevel 比较级别,并给出 HTTP Handler 中的配置、Close、Flush 与 Writer 复用注意事项。136 收藏 -
os.File.WriteAt 要求从指定偏移写入,而 O_APPEND 要求普通写始终追加到文件尾,两种语义互相冲突。本文用一个小型文件补丁工具讲清报错原因、正确打开标志和双句柄设计。135 收藏 -
围绕 Go net TCP 监听地址,说明通配地址、具体网卡 IP、tcp4/tcp6 与双栈边界,并给出启动异常的排查清单。134 收藏 -
Go archive/tar 解包稀疏文件时,Header.Size 表示逻辑大小,而 Reader.Read 会把空洞读成 NUL 字节。本文说明 io.Copy 为什么会让实际占用变大,如何识别 GNU/PAX 稀疏格式,以及普通解包与保留空洞时的处理边界。133 收藏 -
TLS 会话恢复是在新连接上复用先前会话状态以缩短握手,并不会复用旧 TCP 连接。本文区分 http.Transport 连接池与 ClientSessionCache,说明 Reused、DidResume 的观测方法和常见误判。133 收藏 -
strings.ToValidUTF8 能把非法 UTF-8 清洗成合法字符串,但替换长度可能改变后续字节偏移。本文用 DecodeRuneInString 记录原始错误区间,并给出偏移敏感场景的等长替换方案。132 收藏 -
Go 泛型函数不能把 nil 直接返回为任意 T。本文区分类型参数零值与具体可空类型,给出 zero、nilPtr、nilSlice 的写法,并解释无普通实参时为何要显式补全类型参数。132 收藏 -
Go compress/gzip 写入后不调用 Close,可能导致缓冲数据和 GZIP footer 没有完整写出。本文用最小示例说明 Write、Close、底层资源关闭和读取到 EOF 的排查顺序。132 收藏 -
读多写少不等于一定该用 sync.RWMutex。本文从读临界区、写者等待、锁升级限制和实际基准四个角度,说明如何在 Mutex 与 RWMutex 之间做出可验证的选择。131 收藏 -
maps.Clone 会创建新的 map 容器,但键和值只按普通赋值复制;值中若含切片、指针或 map,副本仍可能共享底层数据。本文用配置快照案例讲清判断方法、定制复制与测试门禁。131 收藏 -
Go TestMain 没有 error 返回值,初始化失败时应先清理已创建资源,再用 os.Exit(1) 明确阻断测试;初始化成功则保存 m.Run 的退出码,清理后原样返回。130 收藏