Go问答技术文章
-
Go Decimal 无法恢复进入 float64 前已丢失的十进制尾数和输入格式。通过相邻长小数示例区分浮点往返表示与原始输入,并说明字符串、整数系数入口及舍入策略的适用边界。397 收藏 -
Go google/uuid 的 Validate 只返回格式判断结果,Parse 则解码得到 UUID 值。结合严格36位小写接口示例,区分兼容格式、规范化、零值策略、版本要求与资源权限。397 收藏 -
Go gzip Close 负责补写压缩数据和流尾部,文件 Close 与 Flush 不能代替它。本文给出保留复制、压缩收尾及文件关闭错误的示例,说明失败产物隔离与交付条件。397 收藏 -
token.File.String 只按 Name、Base 和 End 生成固定的文件描述。要控制输出中的文件标识,应在 AddFile 时传入 filename;需要自定义日志格式时,读取 Name、Base、Size、End 后自行拼接。396 收藏 -
Go 反射删除 map 元素时,SetMapIndex 的 elem 要传 reflect.Value{};本文说明零 Value、类型可赋值和 nil map 的边界。396 收藏 -
filepath.Join 采用客户端目标系统的路径规则,不能自动代表 SFTP 远端命名空间。本文区分本地与远端路径,给出单文件名拼接示例,并说明 ToSlash、词法清理和服务端权限的边界。396 收藏 -
Go http.Cookie.Valid 并不检查 SameSite 枚举。本文拆分标准库字段校验、SameSite 序列化与业务白名单,帮助定位 Cookie 看似被拒绝或属性消失的问题。396 收藏 -
Go 升级后 runtime.KeepAlive 相关代码出现差异时,先不要把问题归因于 API 随机变化。本文从对象可达性、终结器、底层资源句柄、数据竞争和 unsafe/cgo 约束五条线定位原因,并给出正确放置 KeepAlive 的最小写法。396 收藏 -
sync.RWMutex 不支持把 RLock 升级为 Lock,读锁未释放时申请写锁会等待自己释放读锁而形成阻塞。本文用原创代码对比拆分读写临界区与直接使用单写锁的改造方案,并说明重新检查、锁复制和对象生命周期边界。395 收藏 -
区分Ristretto写入缓冲、Set返回值与策略接纳,说明Wait为何不能保证命中,并给出诊断片段、TTL与成本排查及缓存未命中回源写法。395 收藏 -
Go 的 atomic 操作只为原子访问提供同步语义,同一共享变量若再混用普通读写,仍可能产生数据竞争。本文按资产、攻击路径、防护控制和验证清单说明统一访问策略。395 收藏 -
Golang · Go问答 | 3星期前 | go · 垃圾回收 · 性能排查 · 运行时 · 内存分配 GOGC Go GC runtime.MemStats HeapAlloc TotalAlloc NumGC
Go GC 频繁触发时,先用 TotalAlloc 增量判断分配速率,再对照 HeapAlloc、HeapObjects 和 NumGC,区分短命对象过多、存活堆增长与调参边界。本文用一个最小采集器给出判断路径。395 收藏 -
Go Benchmark 结果抖动时,先检查 ResetTimer、RunParallel 与外部资源是否把计时范围混在一起。本文用固定输入、并行边界和重复运行命令整理 ns/op 与 allocs/op 的正确解释方式。395 收藏 -
Go Zerolog 的 Info、Error 等方法只会创建待提交的 Event;本文说明为什么缺少 Msg 会没有输出,并给出 Msg、Msgf、Send 及等级、采样、writer 排查顺序。395 收藏 -
Go HTTP 请求应把 context 超时绑定到 Request,并在拿到响应后关闭 Response.Body;循环调用时复用同一个 http.Client,让 Transport 有机会复用持久连接。395 收藏