Go语言技术文章
-
Go sync.OnceFunc 把一次性初始化动作封装成可并发调用的闭包。本文从初始化入口、共享状态、重复调用和 panic 边界拆解它的使用方式,并说明何时应改用 OnceValue。166 收藏 -
Go debug/dwarf.Reader 按 DWARF 树的前序顺序返回条目,遇到 Children=true 的父条目后可以调用 SkipChildren 跳过整棵子树。本文用 ELF/DWARF 读取示例说明调用位置、Tag=0 边界、常见误区和不可信输入限制。166 收藏 -
解释 Go testing.Parallel、t.Run 与 Cleanup 的执行边界,帮助你安排测试夹具和资源释放,避免并行子测试提前清理共享资源。166 收藏 -
Go Humanize 用 IBytes 和 IBytesN 将字节数格式化为 KiB、MiB 等 IEC 单位。本文从单位边界、默认展示、总位数控制和大数值注意事项入手,给出适合文件列表与摘要展示的选择方法。166 收藏 -
Go Validator 的字段标签适合校验单个字段,密码与确认密码、起止时间等跨字段不变量需要结构体级校验。本文用 RegisterStructValidation 注册 StructLevelFunc,说明 ReportError、错误路径、初始化时机和安全边界。166 收藏 -
Goose 的 .env 加载和 SQL 迁移变量替换是两套机制:前者提供 GOOSE_* 等 CLI 配置,后者默认关闭,必须用 -- +goose ENVSUB ON/OFF 包住查询。本文按配置来源、占位符语法和发布检查梳理为什么变量没有自动替换。166 收藏 -
Go NATS 客户端退出时,Drain 会先让订阅进入排水状态、停止继续接收新的发布,再在收尾后关闭连接;Close 则直接关闭连接并释放阻塞调用。本文用故障复盘场景拆解两者边界、超时配置和选择方法。166 收藏 -
Go beep 混合两个音频流时,先解码为 Streamer,再统一采样率,最后按一次性播放或动态追加场景选择 beep.Mix 或 beep.Mixer,并正确处理扬声器缓冲区与资源关闭。166 收藏 -
GoLLRB 使用 AscendRange 按左闭右开区间遍历有序元素。本文说明 Item 比较规则、边界参数、提前停止和空结果处理,并给出适合分页与时间窗口查询的调用方式。166 收藏 -
Go runtime/debug.SetTraceback 用来调整未恢复 panic 或运行时错误退出前的堆栈详情。本文梳理 GOTRACEBACK 各级别、运行时设置的限制,以及开发、测试和生产环境如何选择诊断输出。166 收藏 -
Go encoding/csv.Reader 默认会校验记录列数。本文说明 FieldsPerRecord 的正数、零值和负值模式,并用表头映射短行,在业务层记录缺失字段,同时区分列数差异与真正的 CSV 解析错误。166 收藏 -
Go Transport 的 MaxConnsPerHost 限制拨号、活动和空闲连接总数,达到上限可能让请求等待。本文用 HTTP/1 示例解释共享池、trace 信号和响应体释放,并说明 HTTP/2 与调参边界。165 收藏 -
使用 Go strings.CutSuffix 精确移除末尾一份可选后缀,保留中间内容,并区分 found、空后缀、重复后缀、大小写与旧版本兼容写法。165 收藏 -
Go netip.Prefix.IsSingleIP 用来判断一个 CIDR 前缀是否只包含一个 IP。本文结合 IPv4、IPv6、PrefixFrom、IsValid 和 Masked,说明如何把单地址判断接入路由与访问控制,并避开未掩码地址位和非法前缀的误区。165 收藏 -
介绍 Go opentype.ParseCollection 读取 TTC、OTC 及单字体文件的方法,说明字体索引选择、错误处理与底层数据寿命,并区分字体解析和绘制配置。165 收藏