Go教程技术文章
-
Go 的 time.LoadLocation 在精简容器中报 unknown time zone,通常是运行环境缺少 IANA 时区数据。本文按查找顺序、镜像补齐、time/tzdata 嵌入和 ParseInLocation 验证给出处理方案。403 收藏 -
Go 解析带时区字符串时,布局要使用 -07:00 或 -0700 这样的数值偏移格式。本文说明 time.Parse 如何保留原始偏移、没有时区时为什么会按 UTC 处理,以及什么时候应该用 ParseInLocation 加载业务时区。226 收藏 -
Go 里不要只按“随机数”三个字选包:模拟、洗牌和可复现实验用 math/rand/v2,令牌、密钥和验证码用 crypto/rand。本文把并发安全、独立源与测试注入边界放在同一张决策表里。203 收藏 -
用 math/rand/v2 写随机测试时,把 PCG 的两组 seed 作为测试输入保存,并为每个并发用例创建独立随机源;失败时输出 seed,下一次就能重放同一组随机序列。159 收藏 -
Go math/rand/v2 的顶层函数虽可并发调用,但任务需要独立状态时应为每个任务创建自己的 Rand。本文用 NewPCG、稳定种子和复现检查拆开并发安全、独立性与密码学安全边界。119 收藏 -
Go big.Float 比较结果不稳定,通常是精度、舍入模式或类型转换顺序不一致。本文用 Int、Rat 和 Float 的边界示例,说明如何设置二进制精度、检查 Acc,并用 Cmp 完成可靠比较。295 收藏 -
Go big.Rat 转小数时,先保留精确有理数,再用 FloatString 指定小数位;不要提前转 float64。本文说明 FloatString、FloatPrec 和 big.Float 的精度边界,以及金额、比例等场景的选择。266 收藏 -
Go 订单金额超过 int64 时,按最小货币单位使用 big.Int,比例计算使用 big.Rat,并守住 JSON 与数据库边界。124 收藏 -
Go 模板选型的关键不在 API 是否相似,而在最终输出是否会被浏览器解析。本文用同一份数据说明 html/template 的上下文自动转义、text/template 的纯文本边界,以及可信 HTML 片段的使用条件。112 收藏 -
Go 的 html/template 会按输出上下文自动转义。本文解释为什么不能直接拼 HTML 字符串,以及如何划分普通文本、可信片段和回归检查边界。388 收藏 -
Go 渲染 HTML 时,应使用 html/template 并让普通用户输入保持 string 类型。本文说明上下文自动转义、属性与 URL 边界,以及 template.HTML 只能承载可信片段的使用条件。314 收藏 -
Go text/template 访问 .Profile.Name 失败时,先拆解点号路径和点号作用域,再区分字段、map 键、nil 值与执行错误,最后用 missingkey、with、index 稳定修复。486 收藏 -
Go text/template 输出空字符串不一定是字段缺失。本文区分 map 缺键、空字符串和结构体零值,并用 missingkey=error、hasKey 与 index 给出可执行的排查和处理方式。204 收藏 -
Go text/template 默认可能忽略缺失 map 键。本文比较 missingkey 的三种策略,示范如何让必填键在 Execute 阶段直接返回错误,并处理可选字段。102 收藏 -
Go 正则解析日志时,不要把 FindStringSubmatch 的数字下标散落在结构体初始化里。使用命名捕获组配合 SubexpIndex 建立字段映射,匹配失败返回错误,可选字段缺失保留零值,正则调整后更容易维护。436 收藏