-
math/big.Int.SetString 返回的是大整数指针和成功布尔值,不会单独返回 error。本文围绕进制参数、前缀、失败返回值和边界封装,说明为什么解析失败时会得到 nil,以及怎样安全处理。
-
Go DirFS 只保证从指定目录开始打开文件,不会自动阻止符号链接越过根目录。本文区分 fs.ValidPath 的词法检查与真实文件边界,并给出 Go 1.24 起使用 os.OpenInRoot 和 os.Root.FS 的处理方式。
-
Go runes.If 可按字符集合为连续片段选择不同转换器。本文用派生检索标签说明两套规则的组合写法,并解释 nil 分支、Reset、UTF-8 输入和串联转换的区别。
-
Go 1.21 起,crypto/tls 提供 QUICServer 与 QUICConn,负责 TLS 握手这一层,不替代 QUIC 的 UDP 拥塞控制与数据包调度。本文从资产、信任边界和事件循环出发,说明服务端如何创建连接、处理握手事件与安全关闭。
-
Go 服务写 Cookie 时,HttpOnly、SameSite 和 Secure 不是勾选项,而是分别对应脚本读取、跨站发送和传输加密边界。本文用 net/http 的最小写法说明属性组合、反向代理信任条件和可复查的安全检查。
-
Go 的一次取值函数适合惰性初始化,但初始化函数一旦 panic,后续调用会再次 panic,而不是自动重试。本文拆开这个语义,给出可观测、可控的失败处理方案。
-
Go 的 os.File.ReadAt 适合多个 goroutine 按独立偏移量并发读取同一个文件,但每次调用仍要检查 n 和 err,尤其要正确处理 n < len(buf) 的短读与 io.EOF。
-
Go 使用 database/sql 查询可空字符串时,普通 string 不能直接接收 SQL NULL。本文通过 sql.NullString、Rows 多行扫描、Go 1.22 的 sql.Null[string] 和 COALESCE 对比,说明如何保留或转换 NULL 语义。
-
用 SyntaxError、UnmarshalTypeError 和 Decoder.InputOffset 区分 JSON 错误口径,并把字节偏移、字段路径、原始片段和业务记录写进可检索日志。
-
Go benchmark 结果波动时,先划清 b.N 的计时边界,再用 ResetTimer、benchmem、allocs/op、B/op 和 AllocsPerRun 判断分配是否真的影响了结果。
-
Go 导入 internal 包被拒绝时,应先定位 internal 目录上方的允许路径,再用 go.mod 和 go list 对照 ImportPath、Module.Path 及嵌套 module,最后选择移动调用方或提取公开 API。
-
Go maps.Clone 传入 nil map 后,返回值仍是 nil:读取安全但写入会 panic。本文对比 nil map 与空 map 的长度、读写和初始化差异,并说明 Clone 对嵌套 slice、map、指针值仍是浅复制。
-
Go 的 type assertion 失败可能来自 nil 接口或动态类型不匹配,携带 nil 指针的接口又是另一种状态。本文用 comma-ok、nil 判断和类型 switch 说明如何安全区分并处理这三类输入。
-
Go 的 context.WithDeadline 只能把子 context 的截止时间收紧,不能延长父请求预算。本文说明 Done、Err、cancel 如何传播,以及为什么取消不会强行终止未监听 context 的 goroutine。
-
Go fmt.Appendf 会把格式化结果追加到已有 []byte,并返回更新后的切片。本文说明如何接住返回值、连续追加字段、处理 len 与 cap 边界,以及 Go 1.19 之前的兼容写法。