Go语言技术文章
-
用 Go image/draw 按目标尺寸计算居中裁剪框,再将源图区域复制到缩略图画布,并排查边界、偏移与合成模式问题。234 收藏 -
Go Ticker 动态调整周期不必重复创建对象,使用 Reset 复用同一条通道即可。本文说明周期校验、单一拥有者、暂停恢复和 Stop 清理的边界。234 收藏 -
Go fuzz 运行时间过长时,不要只盯着 -timeout。本文区分 -fuzztime、-fuzzminimizetime、-parallel、-timeout 和 Fuzz 目标内的输入大小限制,并给出本地、CI 与深度 fuzz 的组合方式。234 收藏 -
Go goroutine 退出不会自动关闭 channel。本文区分发送阻塞、接收等待与取消确认,用固定工作者和单一关闭者说明提前停止消费的处理方式。234 收藏 -
Go uuid 导入失败应先区分标准库 uuid 与 github.com/google/uuid,再核对实际工具链、模块目录和版本参数。本文给出两种路径的示例及 CI 配置处理方法。234 收藏 -
Go slices.Sorted 可以把 iter.Seq 中的有序元素收集成新的排序切片,适合整理 map 键、迭代器结果和需要稳定输出的集合。本文说明最小写法、复制边界、空输入、重复值以及 SortedFunc 与原地排序的选择。234 收藏 -
用 Go list -m all 查看当前模块构建中实际参与选择的依赖版本,并结合 -json、-f、-u 识别替换模块、间接依赖和可用升级。234 收藏 -
Go os.Open 失败时返回的是错误和不可用的文件对象,不能继续 Read、Stat 或 Close。本文说明先判错再使用的写法,解释 PathError 的原因识别,以及成功打开后如何安全管理 Close。234 收藏 -
go-vcard 用 Card 表示一张联系人卡片,多个电话号码应作为同名 TEL 字段追加保存。本文演示 AddValue 与带 Params 的 Add 写法,并说明 SetValue 为什么会覆盖已有号码。234 收藏 -
Go 的 -race 依赖 cgo,但启用 cgo 不等于自动覆盖 C 库内部竞态。本文区分环境报错、Go 侧动态检测和 C/C++ 侧 ThreadSanitizer 的责任边界,并给出排查命令与适用限制。234 收藏 -
SystemCertPool错误应先区分系统根加载、补充PEM读取解析与TLS验证阶段。文章给出保留错误链的封装,说明权限和路径分类的边界,以及平台、环境变量和缓存差异。234 收藏 -
Go container/heap 修改优先队列元素后,不需要先 Remove 再 Push。维护 Item.index,在修改 priority 后调用 heap.Fix,就能以 O(log n) 恢复堆序;本文同时说明 Swap、出队和失效索引的边界。234 收藏 -
Go ast.IsExported 只判断名称的首个 Unicode 字符是否为大写字母。本文说明如何在 AST 遍历中读取 ast.Ident.Name,比较包函数、节点方法与 token.IsExported,并梳理空名称、非法输入、Unicode 和类型可见性的边界。234 收藏 -
区分 Go defer 普通参数的登记时求值与匿名闭包的延后读取,说明变量变化、资源清理和命名返回值修改应该如何设计。233 收藏 -
Go regexp 默认采用左优先匹配;如果同一起点有多个候选并希望优先拿到更长结果,可以在共享使用前调用 Regexp.Longest。本文用最小示例对比默认模式、Longest 与 CompilePOSIX 的边界。233 收藏