Go问答技术文章
-
Go time.Parse 解析不带时区的字符串时会按 UTC 解释。本文从现象出发,说明何时使用 ParseInLocation、何时使用 In,并补充 IANA 时区、夏令时和错误处理的边界。329 收藏 -
Go Cron 同时设置日字段和星期字段时,不一定是两个条件都满足:robfig/cron/v3 在两者都为具体限制时按或匹配;使用 ? 留空其中一个字段,才适合表达只按日期或只按星期限制。329 收藏 -
Go genetlink 的 Family.ID 是当前连接按名称发现得到的运行时结果,不宜写成跨环境复用的固定数字。本文说明 GetFamily、Family.Version 与 Execute 的配合方式,以及重连和缓存时应守住的边界。329 收藏 -
Go database/sql 驱动只有在连接已确认失效且操作不可能重复执行时才应返回 driver.ErrBadConn。本文解释 database/sql 的重试边界、驱动实现位置,以及业务代码为什么要保留结果不确定时的原始错误。329 收藏 -
看到 Go 编译报告中的 moved to heap 时,不要只凭一条提示判断性能。本文用 -gcflags=-m=2 追踪地址和生命周期,再结合 -benchmem 对照确认是否值得优化。328 收藏 -
Go module checksum mismatch 不要先删 go.sum。本文通过 go mod download -json、go.sum、GOSUMDB 与 GOPROXY 对照,判断是内容变化、代理缓存还是私有模块配置边界。328 收藏 -
Go 业务超时应优先使用 time.Now 保留的单调时间语义,日志和跨服务协议则使用墙上时间或剩余 Duration。本文拆解校时影响、API 选择、序列化边界和 RPC deadline 的决策方法。328 收藏 -
从导入图、包级变量依赖和 init 三个层面排查 Go 服务启动时读到错误全局配置的问题,并给出更可维护的初始化清单。328 收藏 -
Go interface 比较时,动态类型相同但值不可比较就可能触发 comparable panic。本文拆解 slice、map、func 的边界,并给出类型收窄、字段比较和 reflect.Type.Comparable 保护方案。328 收藏 -
Expr 中 7 / 3 与 7.0 / 3 的结果值和 Go 返回类型并不相同。本文说明整数文字量、浮点文字量、float()/int() 以及 AsFloat64/AsInt 的作用边界,帮助规则表达式稳定输出。328 收藏 -
Go Gonum 的 stat.Quantile 要求样本按升序排列,因为分位数本质上是在有序样本和累计权重上定位。本文说明排序契约、SortWeighted、权重对应关系以及 Empirical 与 LinInterp 的边界。328 收藏 -
Go net.Dialer.Control 提供了真正拨号前接触底层连接的入口。本文用 syscall.RawConn.Control 说明如何在回调内读取或设置 socket 参数、传递错误,并处理网络名变化与文件描述符生命周期边界。328 收藏 -
Go 官方 watchflakes issue #81328 记录了 cgo_stale 在 ppc64 构建器的 signal: killed。本文从测试脚本、CGO_CFLAGS、GOCACHE 与编译器日志入手,说明为什么不能把资源终止误判成缓存陈旧,并给出可复查的证据链。327 收藏 -
用 errgroup.WithContext、SetLimit、TryGo 和 Wait 处理 Go 并发读取与转换任务,讲清并发上限、错误取消、结果收口和常见边界。327 收藏 -
Go crypto/x509 中把自签名根证书加入 Roots 仍验证失败时,重点检查 Intermediates、服务器发送链、DNSName 和错误类型,本文给出可复用的排查代码与部署清单。327 收藏