Go语言技术文章
-
Go base64.Encoding.Strict 会额外检查末尾量子中的填充位是否为零。本文用一个最小示例解释非零填充位、CorruptInputError、换行忽略和标准编码修复之间的关系,帮助定位严格解码失败。480 收藏 -
Go 的 compress/zlib 可以用预置字典压缩具有固定重复片段的短消息。本文从适用条件出发,给出 NewWriterLevelDict 与 NewReaderDict 的配对写法,并说明 ErrDictionary、Close 和字典生命周期的处理边界。480 收藏 -
Go子测试可通过当前t.Setenv临时设置环境并自动恢复。本文给出串行表驱动示例,说明清理归属、空值与未设置状态,以及Parallel、配置缓存和后台任务的限制。480 收藏 -
Go 正则重复捕获组不会保存每次参与的历史值。本文区分完整匹配与子组槽位,给出先约束记录再提取所有单项的写法,并说明 FindAll、命名组和字节索引的边界。480 收藏 -
用 crypto/rand 生成随机字节,再以 RawURLEncoding 得到无等号的 URL 令牌。示例区分随机性、编码格式和业务有效性,并说明严格解析、旧格式迁移与链接使用注意事项。480 收藏 -
Go ServeMux 匹配不到路径时,按 Go 版本、路径段、尾斜杠、通配符、HTTP 方法和 Host 逐项排查,掌握 {id}、{path...} 与 {$} 的实际边界。480 收藏 -
Go 服务把 regexp.Compile 放进请求函数后,正则本身没变,延迟却会随并发上升。本文用基准对比请求内编译、包级预编译和受控缓存,解释编译成本、并发读写与动态规则的边界。479 收藏 -
用 Go filepath.IsLocal 先拦截绝对路径和 .. 路径,再配合 Join 与符号链接复核,建立文件下载场景的安全边界。479 收藏 -
用 Go 标准库 netip.Prefix.AppendTo 把 IPv4 与 IPv6 网段写入既有字节缓冲区,验证前缀长度、零值和容量边界,避免不必要的字符串分配。479 收藏 -
通过一个可复现的 slog 小实验,拆开 LogValuer、Handler.Enabled 与 Logger.Enabled 的调用顺序,说明昂贵字段怎样延迟计算,以及等级过滤能省下什么成本。479 收藏 -
用 Go 的 filepath.WalkDir 遍历文件树时,如何跳过 .cache、.git 等隐藏目录但继续访问其他路径?本文给出处理 error、判断 DirEntry 和使用 fs.SkipDir 的最小写法,并说明 SkipAll、符号链接与根目录错误的边界。479 收藏 -
sql.Named 能保留参数的业务名称,但不会替不同驱动改写 SQL 占位符。本文用 database/sql、MySQL、PostgreSQL 和 pgx 的边界说明命名参数如何落地,避免把参数语义和占位符语法混为一谈。479 收藏 -
slices.Clone 会复制元素并保留输入切片的 nil 语义;copy 只搬运元素,目标切片是否为 nil、长度够不够,都由调用方先决定。本文用对照代码说明两者的边界。479 收藏 -
Go test -race 通过并不等于业务状态一定一致。本文从执行覆盖、同步关系和多字段不变量三层排查数据异常,并给出可复查的修复清单。479 收藏 -
Go math/bits.Mul 返回 hi 和 lo 后,如何判断乘积是否超出低半部,以及怎样用 Mul64、math/big 重建并核对完整结果。479 收藏