Go教程技术文章
-
Go 的 math/big.Float 使用二进制尾数精度,不是十进制小数位。本文用原创示例解释 SetPrec、舍入模式、运算接收者和 Text 输出之间的区别。470 收藏 -
Go 的 math/big.Int.SetString 通过第二个参数 base 指定进制:固定格式传明确进制,带 0b、0o、0x 前缀的输入可传 0 自动识别。本文说明返回值、下划线和不可信输入的处理边界。240 收藏 -
Go 的 math/big.Rat 用任意精度分子和分母保存有理数,适合金额比例、配额和分数计算。本文说明如何创建、解析、运算和格式化 Rat,并划清与 float64 及浮点输出的边界。312 收藏 -
Go strconv 转换失败后,用 errors.As 获取 *strconv.NumError,读取 Func、Num、Err 字段,并用 errors.Is 区分语法错误与范围错误。301 收藏 -
Go strconv.ParseFloat 可以解析 NaN、Inf 和 Infinity,但 NaN、正负无穷与普通数字溢出并不是一回事。本文用 math.IsNaN、math.IsInf 和 ErrRange 给出清晰的分类方式。501 收藏 -
解释 Go 高频循环中反复调用 time.After 的分配与回收边界,区分 Go 1.23 前后的定时器语义,并给出可复用 Timer 的 Stop、排空和 Reset 写法。313 收藏 -
用可复用的 []byte 缓冲调用 strconv.AppendQuote,连续构造带引号字符串,减少中间字符串和无效扩容,并厘清 Go 字符串字面量与 JSON、URL 编码的边界。184 收藏 -
Go 的 time.Timer.C 没有读到事件,不等于定时器已经停止。本文用 Stop、Reset 的返回值和业务侧状态记录,拆开未触发、已停止、已到期与已消费几种情况。173 收藏 -
Go 的 time.Ticker 停止后不会关闭 ticker.C,后台消费 goroutine 仍可能残留。本文用停止信号、context 和 WaitGroup 拆开 ticker 停止、循环退出与任务收尾,说明何时使用 NewTicker、Tick 和 Reset。297 收藏 -
用 embed.FS 把 HTML 模板嵌入 Go 二进制,再通过 html/template.ParseFS 解析并用 ExecuteTemplate 输出页面。本文从路径、glob、模板名称和数据四个边界说明部署自包含与常见排错方法。271 收藏 -
Go 的 html/template 会按输出上下文自动转义普通字符串;只有经过明确 allowlist、来源受控的片段,才应在渲染前转换为 template.HTML。本文用一个小页面说明两者的边界、代码写法和验收清单。390 收藏 -
解释 Go html/template 为什么会对 URL 查询参数和路径片段做上下文转义,并区分正常百分号编码与不安全协议导致的 #ZgotmplZ。461 收藏 -
用 Go text/template 的 Clone 复制公共模板命名空间,再为 Web 和邮件渠道追加独立 body 定义,掌握 ExecuteTemplate、并发执行与 HTML 安全边界。209 收藏 -
Go text/template 遇到 map 缺字段时,可用 missingkey=default、zero 或 error 控制继续输出、返回零值或立即报错;本文说明三种规则的边界和 Execute 错误处理方式。301 收藏 -
Go text/template 的自定义函数要先放进 template.FuncMap,再通过 Funcs 绑定并 Parse 模板。本文说明注册时机、函数签名、管道调用、错误处理,以及解析后替换同名函数的边界。319 收藏