Go语言技术文章
-
解释 Go database/sql 的 TxOptions 如何跨越驱动边界,区分会话默认值与下一笔事务作用域,并给出可靠的排查和验收方法。165 收藏 -
讲清 Go sync/atomic.Uint64 的自动对齐、primitive 原子函数在 32 位架构上的布局责任,以及无锁计数器的复制、快照、伪共享和分片边界。165 收藏 -
Go aes.NewCipher 报 invalid key size 时,关键不是截断或补零,而是确认 key 的实际字节数。本文区分原始字节、hex、base64 和密码输入,给出 16/24/32 字节检查、错误处理与 AES-GCM 调用边界。165 收藏 -
介绍 Go 1.27 goroutineleak profile 的接入方式、持续采样口径和检测边界,帮助定位永久阻塞的 goroutine 泄漏。165 收藏 -
testing/synctest 用 bubble 隔离 goroutine,并把 time 包切换到虚拟时钟。本文从超时测试出发,说明 Test、Wait、资源清理和外部 I/O 的边界。165 收藏 -
讲清 Go io.SectionReader 的逻辑片段长度与底层文件实际长度的区别,结合 Size、Read、累计字节数和 io.EOF 判断短片段、空片段与完整读取。164 收藏 -
Go atomic.Value 不能把 nil 接口和 *Config 混着存。用 typed nil 指针固定具体类型,再用不可变配置快照完成安全的可选配置热更新。164 收藏 -
Go 1.27 已支持具体类型的泛型方法,但旧工具链、低版本 go.mod 和接口方法仍有边界。本文用 Box、Pair 示例说明排错与兼容写法。163 收藏 -
Go 中读取 uint64 乘法高位应使用 math/bits.Mul64,它返回完整乘积的 hi 高 64 位和 lo 低 64 位。本文说明最小写法、溢出判断、类型边界和测试对照,避免先相乘再移位导致高位丢失。163 收藏 -
Go 的 sort.Search 不是直接判断相等,而是在 [0,n) 中寻找比较函数第一次返回 true 的位置。排查结果错误时,先检查谓词是否单调,再处理 n 返回值和精确命中判断。163 收藏 -
用 Go embed.FS 把模板目录编译进二进制,启动时通过 html/template.ParseFS 解析,请求阶段用 ExecuteTemplate 执行,并说明嵌入路径、模板名称、匹配规则和发布边界。163 收藏 -
用 Go maps.Clone 复制 map,隔离顶层写入,并通过值类型判断 slice、指针等嵌套数据是否还需要额外复制。163 收藏 -
bufio.Scanner 默认按换行切分,输入中的零字节通常会作为普通字节保留。本文用小样例排查默认边界、自定义 NUL 分隔和超长 token 限制,并给出 Scanner 与 Reader 的选择建议。163 收藏 -
time.Parse 遇到 MST、CST、PST 等时区缩写时,会受 Local 和缩写是否已知影响。本文用 Zone、Location 和 ParseInLocation 拆开定位方法,并给出更稳定的数值偏移解析方案。163 收藏 -
围绕 Go time.Date 处理夏令时日期的真实边界,讲清本地时间往返校验、跳时缺口、重复小时、offset 记录和 UTC 存储策略。162 收藏