Go问答技术文章
-
Go Validator 的 omitempty 会先判断字段是否为空,空值会直接跳过 min、gte 等后续规则。本文用最小结构体说明字符串、数字、指针和集合的边界,并比较 omitnil 与 omitzero 的选择。403 收藏 -
Go runtime/metrics 的 Float64Histogram 需要先检查 Value.Kind,再用相邻 Buckets 边界解释 Counts 分桶。本文给出安全读取、区间配对、总量汇总和累计指标判断方法。403 收藏 -
Go 向已关闭 channel 发送会触发 panic。本文从发送生命周期出发,说明关闭责任如何划分,并给出多发送方等待后统一 close 的迁移写法与排查清单。402 收藏 -
Go jsontext 的 ReadToken 返回值可能依赖 Decoder 内部缓冲区,后续读取会让原始 token 失去长期有效性。本文说明 Token.Clone 的迁移边界与回归检查方法。402 收藏 -
Go TLS 握手出现证书主机名不匹配时,重点核对实际校验主机名、SNI 和证书 SAN;本文给出诊断命令、Go 配置示例以及域名和 IP 场景的修复边界。402 收藏 -
bytes.Buffer.WriteByte 的 error 固定为 nil 并不是漏掉了错误处理,而是为了匹配 bufio.Writer 的接口形状。本文说明单字节写入、字符写入与容量边界的区别。402 收藏 -
Go Humanize 的 Bytes 使用 1000 进位并输出 kB、MB,IBytes 使用 1024 进位并输出 KiB、MiB。本文用同一输入解释两者的差异、舍入规则和 N 变体选择,避免容量日志与接口展示混用单位体系。402 收藏 -
go-chart 的 HideXAxis、HideYAxis 与 chart.Hidden() 作用对象不同:前者控制坐标参照的显示,后者控制单条序列的绘制。本文用代码和选择表说明两者的边界。402 收藏 -
Go 中自定义 RoundTripper 时,不要用空的 http.Transport 替换默认传输层。本文说明如何通过类型断言和 Clone 保留 ProxyFromEnvironment、连接复用与响应体边界。401 收藏 -
Go httputil.ReverseProxy 的 SetURL 会让出站 Host 默认跟随目标主机。本文用 Rewrite 先修改目标 URL,再保留入站 Host,并说明 X-Forwarded-Host、路径拼接与安全边界。401 收藏 -
Go 程序里的相对路径不是相对源码目录,而是相对进程当前工作目录。本文按 os.Getwd、filepath.Abs、显式配置根目录和部署检查清单的顺序,定位 IDE、测试、脚本与服务启动时的路径失效问题。401 收藏 -
Go 中直接比较 error 只检查当前错误值,errors.Is 会沿 Unwrap 错误链寻找匹配。本文用 %w、errors.Join 和自定义 Is 说明三种判断边界。401 收藏 -
context.AfterFunc 的 stop 函数只负责解除回调关联,并不等待回调结束。本文用取消清理场景说明 true、false 的含义,以及如何等待已启动回调完成。401 收藏 -
Go Rows 关闭后 Next 返回 false,而 Err 不一定因主动关闭变成非 nil。用假设排障场景解释返回 Rows 前 defer Close 的所有权错误,并给出消费与关闭责任统一的函数写法。401 收藏 -
Go 精简容器中 time.LoadLocation 失败,通常是镜像缺少 IANA 时区数据库。本文按查找顺序说明安装 tzdata 与导入 time/tzdata 两种修复方案,并给出容器上线复查清单。401 收藏