Go问答技术文章
-
Go 流式响应设置写截止时间后仍像是阻塞,通常是卡在上游取数、通道或锁等待,或者截止时间没有穿透 ResponseWriter 包装层。本文拆开生成、写入、刷新和代理缓冲四个边界,并给出可退出的处理器写法。349 收藏 -
Go 服务健康检查失败而业务接口仍能访问,通常不是业务处理器坏了,而是探针路径、监听地址、状态码或依赖检查边界没有分开。本文用一个最小 net/http 服务拆开存活、就绪和业务依赖检查,并给出按现象定位与部署验收的方法。349 收藏 -
Go 的 math/big.Rat.SetString 支持十进制小数、指数和分数格式。本文排查逗号、单位、空白和返回值误用等失败原因,并说明 RatString 与 FloatString 的区别。349 收藏 -
Go reflect.Elem 遇到 nil 指针时会返回零 Value,而不是一个空的结构体值。本文区分 nil 指针、nil interface 与无效 Value,说明 Kind、IsNil、Elem、IsValid 的安全判断边界,并给出多级指针的处理方式。349 收藏 -
Go 服务端收到 ClientHello 后,怎样用 tls.Config.GetConfigForClient 按 SNI 或 ALPN 选择配置?本文梳理回调参数、nil 与 error、配置不可变和会话恢复边界。349 收藏 -
Go Ticker 的 Stop 只停止后续 tick,不会关闭 C 通道,也不会自动清空调用方保存的旧指针或 channel。本文区分停止发送、关闭通道、解除引用和 GC 回收,给出可退出的接收循环与清理边界。349 收藏 -
Go TLS 默认使用主机根集合,显式空 RootCAs 池却不会自动合并系统根。通过客户端构造示例说明追加企业 CA、加载错误、容器证书环境与其他握手失败的区别。349 收藏 -
Go fmt.Errorf 在格式串中包含多个 %w 时会保留多个错误分支。本文用自动化任务场景说明多错误关系、errors.Is 与 errors.As 的选择、nil 过滤、错误门禁和兼容边界。349 收藏 -
Go net/http.Transport 升级后出现连接复用、延迟或连接数变化时,不要先猜版本回归。本文用最小客户端、httptrace、Response.Body 生命周期和显式 Transport 配置,建立一套可比较的定位方法。349 收藏 -
Go 的 time.Duration 本质是 int64 纳秒数。本文用具体换算、溢出判断和定时器示例说明,为什么长时间配置会变成负数,以及如何在进入 time.NewTimer 或 time.After 前拦住错误值。348 收藏 -
Go 1.27 的 go test 默认启用 stdversion vet,会按 go.mod 的 go 指令和文件构建条件检查标准库符号是否超出兼容版本。本文用 slices.Values 说明告警来源、修复选择和 CI 验收边界。348 收藏 -
Go Expr 的普通 Compile 会保留表达式推导出的结果类型,AsBool 则把规则结果约束为 bool。本文用同一组规则说明编译期检查、Run 返回值和动态环境的边界。348 收藏 -
为 Go 接口时间建立独立 JSON 适配类型,给出 UTC 整秒字符串的双向编码完整示例,明确 null、空字符串、精度检查和错误处理,并说明字段缺失与方法递归的常见问题。348 收藏 -
Go 中 error 是接口类型。本文解释为什么底层 *MyError 为 nil 时,返回的 error 仍可能让 err != nil 成立,并给出返回边界的修复与测试写法。348 收藏 -
Go AddDate会对不存在的目标日期进行归一化,而非自动截到月末。本文比较日历偏移、月末截断与固定时长,给出CivilDate实现,并说明账期锚点、闰年和时区边界。348 收藏