Go问答技术文章
-
Cobra 的 SilenceUsage 只控制错误时是否显示 usage,SilenceErrors 只控制是否自动打印错误;本文用 RunE 和 main 的统一错误出口说明组合取舍。311 收藏 -
Go 1.22 改变了 for 循环变量的作用域。本文从 go.mod、闭包捕获和 GOEXPERIMENT=loopvar 三个线索判断代码使用的是新语义还是旧语义,并说明何时仍需显式传参。310 收藏 -
介绍 Go 中 GODEBUG=http2debug=1/2 的使用边界,先确认 HTTP/2 协议,再按 stream ID 和关键帧定位连接、流控、RST_STREAM 与 GOAWAY 问题。310 收藏 -
sync.Cond.Signal 不会保存没有等待者时发出的通知,真正应该持久化的是 ready、队列长度或关闭状态等共享条件。本文用同一把 Locker 保护条件读写,说明如何用 for 设计不会因 Signal 先到而永久等待的等待协议。310 收藏 -
Golang · Go问答 | 6天前 | HTTP客户端 · Go问答 · 排错 · Go net/http Transport Response.Body HTTP连接复用 io.ReadCloser
Go net/http 的 Response.Body 是 io.ReadCloser,关闭负责资源交接,是否读到 EOF 则会影响 HTTP/1.x 持久连接能否复用。本文解释只 Close 与读完再 Close 的差异,并给出小响应和大响应的处理写法。309 收藏 -
Go x/text/unicode/bidi 处理的是逻辑顺序到视觉顺序的双向文本布局,不是把 UTF-8 字节倒序。本文说明 Paragraph.Order、Ordering、Run 与 ReverseString 的职责边界,并给出混合方向文本的处理方式。309 收藏 -
Go 的 base64.Encoding.DecodedLen 返回的是解码数据的最大字节数,Decode 再返回实际写入长度。本文用 StdEncoding、RawStdEncoding 和 AppendDecode 说明怎样分配缓冲区、截取有效数据并处理部分解码错误。308 收藏 -
Go build ID 用于构建关联,-s、-w 控制符号和调试信息。本文比较默认与裁剪方案,给出发布命令示例,并说明精确制品、诊断材料与发布清单的关联责任。308 收藏 -
解释 go-imap v2 FetchCommand 的流式消费、关闭收尾和错误处理,给出可靠 Go 示例及等待耗时、内存成本的比较方法。308 收藏 -
os.Root.OpenFile 只允许在已打开的根目录树内访问文件。本文从相对路径、..、绝对路径和 PathError 四个角度解释越界失败的原因,并给出安全的错误处理与选型边界。307 收藏 -
atomic.Pointer[T] 中的 T 决定了它保存的指针类型以及 Store、Load、Swap 和 CompareAndSwap 的参数与返回值。本文解释 Go 为什么要求指针类型一致,并给出共享配置对象的安全用法与复制、可变性边界。306 收藏 -
使用 Go runtime/metrics 读取 runnable、running、waiting 与 live goroutine 指标,区分近似值和总量,并用连续采样判断运行队列压力,避免把单次高点误判为泄漏或根因。306 收藏 -
Go 中 defer 只能在所属函数返回时执行清理,不能自动停止另一个 goroutine。本文用 context.Done、显式 cancel 和 WaitGroup 拆开取消信号、worker 退出与资源回收三个职责,说明周期任务和阻塞调用的排查边界。305 收藏 -
Go GOPROXY 返回 404 时,先不要急着更换代理。本文从模块路径、主版本后缀、可用版本列表、代理回退规则和私有模块配置五个方面定位问题,配合 go list -m -versions 与 go mod download 找到真正缺失的是路径、版本还是来源。304 收藏 -
Go replace 的本地目录替换不会随依赖库自动传递。结合应用与库发布场景说明主模块作用域、工作区掩盖、版本迁移和独立消费者检查。304 收藏