-
math/big.Int.SetString 解析失败时返回 nil,但接收对象的值是未定义的,可能继续显示旧值。本文解释返回值契约、base 参数和对象复用的安全写法。
-
Go 的 encoding/json 默认会忽略结构体中不存在的 JSON 字段。本文说明如何用 Decoder.DisallowUnknownFields 把请求字段边界前移到解码入口,并处理未知字段、类型错误、尾随 JSON 与接口兼容性取舍。
-
Go net.Resolver.LookupHost 接收 context.Context,返回主机地址字符串切片和 error。本文从一次服务发现调用的实际体验出发,说明怎样设置超时、区分取消与 DNS 失败,并选择适合的解析 API。
-
Go 多层包装错误时,使用 fmt.Errorf 的 %w 保留错误链,再用 errors.Is 判断哨兵错误、errors.As 提取自定义错误类型;本文同时说明 %v 为什么会切断程序化判断,以及如何处理 API 暴露边界。
-
Go Modules 项目中的 go.sum 应与 go.mod 一起纳入版本控制。本文从校验记录、模块代理、私有依赖和 CI 只读构建四个角度,说明怎样生成、评审和提交 go.sum。
-
Go 中不存在可靠的独立端口预检查。用 net.ListenConfig.Listen 直接尝试绑定,成功才代表当前进程取得监听权;不需要固定端口时使用 :0 并从 Listener.Addr 读取系统分配的地址。
-
Go 的 url.UserPassword 会创建包含用户名和密码的 Userinfo,再挂到 url.URL.User 字段中。本文说明 URL 的构造、编码、读取与 Redacted 脱敏输出,并提醒不要把密码直接写入日志或普通 URL。
-
Go 1.24 的 testing.T.Context 会在测试完成、Cleanup 执行前取消。本文从后台 goroutine 未退出的故障现象出发,说明如何传递 t.Context、响应 Done,并用 Cleanup 等待任务收尾。
-
Go io.LimitReader 会把底层 Reader 的非 EOF 错误原样传回,但达到读取上限时返回的是 EOF,不能直接当作“底层读完”。本文用 io.ReadAll、io.LimitedReader 和 %w 包装讲清错误保留、截断判断与流式读取边界。
-
Go 1.23 引入的 maps.Keys 返回键迭代器,配合 slices.Sorted 可以在需要稳定顺序时一次收集并排序,本文用批处理示例说明空 map、无序遍历与高频复用边界。
-
在 Go html/template 中输出 href、src 等 URL 属性时,应让模板根据上下文完成转义和协议过滤。本文用直接绑定、查询参数和允许列表示例说明如何避免 javascript 协议、重复转义与不当使用 template.URL。
-
Go 用 netip.ParseAddr 解析 IPv6 失败时,先区分纯地址、带接口 Zone 和带端口文本;带端口改用 ParseAddrPort,带 Zone 则通过 Addr.Zone 读取。本文给出最小写法、错误分支和迁移清单。
-
sql.RawBytes 引用的是数据库拥有的内存,Scan 后只能使用到下一次 Next、Scan 或 Close。本文说明如何在当前行立即消费,以及什么时候用 append 复制成独立字节切片,避免跨行缓存和异步处理拿到失效数据。
-
filepath.Localize 用于把 io/fs 约定的 slash 分隔路径转换为当前操作系统路径。本文通过 Go 示例说明输入契约、错误边界,以及它和 FromSlash、ToSlash 的区别。
-
math/big.Int 可以保存超出 int64 的整数,但 Int64 在越界时不能作为可靠结果使用。本文从失真现象出发,说明如何用 IsInt64 先判断范围,再决定安全转换或继续保留大整数。