-
Go strconv.ParseFloat 可以解析 NaN、Inf 和 Infinity,但 NaN、正负无穷与普通数字溢出并不是一回事。本文用 math.IsNaN、math.IsInf 和 ErrRange 给出清晰的分类方式。
-
解释 Go 高频循环中反复调用 time.After 的分配与回收边界,区分 Go 1.23 前后的定时器语义,并给出可复用 Timer 的 Stop、排空和 Reset 写法。
-
用可复用的 []byte 缓冲调用 strconv.AppendQuote,连续构造带引号字符串,减少中间字符串和无效扩容,并厘清 Go 字符串字面量与 JSON、URL 编码的边界。
-
Go 的 time.Timer.C 没有读到事件,不等于定时器已经停止。本文用 Stop、Reset 的返回值和业务侧状态记录,拆开未触发、已停止、已到期与已消费几种情况。
-
Go 的标准 Transport 会负责关闭客户端 Request.Body,但连接复用更容易受 Response.Body 未读取和未关闭影响。本文用请求示例拆开两种 Body 的责任边界。
-
Go 的 time.Ticker 停止后不会关闭 ticker.C,后台消费 goroutine 仍可能残留。本文用停止信号、context 和 WaitGroup 拆开 ticker 停止、循环退出与任务收尾,说明何时使用 NewTicker、Tick 和 Reset。
-
GOAMD64 等级不匹配时,先区分 GOOS/GOARCH 与 amd64 微架构要求,再按部署机器的最低能力选择 v1 到 v4。本文给出排查表、构建命令和发布清单,避免高等级产物在旧 CPU 或受限虚拟机上启动失败。
-
用 embed.FS 把 HTML 模板嵌入 Go 二进制,再通过 html/template.ParseFS 解析并用 ExecuteTemplate 输出页面。本文从路径、glob、模板名称和数据四个边界说明部署自包含与常见排错方法。
-
Go 交叉编译默认关闭 cgo,CGO_ENABLED=0 还会排除 import C 的文件。本文用构建约束、CC 交叉编译器和验证矩阵说明哪些功能会消失,以及如何安全选择纯 Go 或 cgo 方案。
-
Go 的 html/template 会按输出上下文自动转义普通字符串;只有经过明确 allowlist、来源受控的片段,才应在渲染前转换为 template.HTML。本文用一个小页面说明两者的边界、代码写法和验收清单。
-
Go 的 cgo 文件能否被识别,取决于 CGO_ENABLED、import C、同包目录、GOOS/GOARCH 和 go:build 约束。本文用 go list -json 查看 CgoFiles、CFiles 与 IgnoredGoFiles,定位文件未参与构建的具体层级。
-
Go 文件是否参与编译,不只看 //go:build,也要把 _GOOS、_GOARCH 或组合后缀带来的隐含条件一起判断。本文用 go list 区分 GoFiles 与 IgnoredGoFiles,并说明 -tags、gofmt 和 _test.go 的边界。
-
解释 Go html/template 为什么会对 URL 查询参数和路径片段做上下文转义,并区分正常百分号编码与不安全协议导致的 #ZgotmplZ。
-
Go generate 不会自动在 go test 前运行,这是 Go 工具链有意保留的职责边界。本文从 //go:generate 指令、生成文件和测试入口的关系出发,说明如何用显式命令或 CI 脚本稳定编排生成与测试,并排查生成缺失、版本漂移和失败传播问题。
-
用 Go text/template 的 Clone 复制公共模板命名空间,再为 Web 和邮件渠道追加独立 body 定义,掌握 ExecuteTemplate、并发执行与 HTML 安全边界。