Go语言技术文章
-
Go fuzz 测试读取相对路径文件失败,通常不是 fuzz 引擎改变了规则,而是相对路径基准与预期不一致。本文说明 go test 的包目录语义、testdata 夹具布局、fuzz 回调的并发边界,以及 go:embed 和显式绝对路径的取舍。142 收藏 -
使用 Go AST 重写源码时,astutil.DeleteImport 可以按导入路径删除 import 声明。本文说明 parser.ParseFile、token.FileSet、format.Node 的配合方式,以及返回值、别名和重复导入边界。142 收藏 -
Go x/image/font/opentype 的 Hinting 会影响矢量字形节点如何落到像素网格。本文对照 HintingNone、HintingVertical 和 HintingFull,说明小字号变形的原因与排查顺序。142 收藏 -
Go gofpdf 中,SetMargins 负责左、上、右三侧的内容边界,SetAutoPageBreak 的 margin 负责距离页底的自动分页触发线。本文用页面模型和最小代码说明两者的区别、组合方式与常见误区。142 收藏 -
Go 的 time.Duration 底层按纳秒计数,外部配置却常用毫秒。本文用单一转换入口区分裸整数、time.Duration 和字符串时长,说明定时器、超时参数、零值、负值与溢出边界,避免单位混用导致等待时间异常。142 收藏 -
Go atomic.Uint64.And 可以用反掩码原子清除一个状态位,并返回更新前的旧值。本文说明状态位设计、^flag 的原因、旧值判断、版本边界,以及 And、Or、Swap、CompareAndSwap 的选择。142 收藏 -
用 pprof.Labels 与 pprof.Do 为实际任务建立租户标签作用域,给出 CPU 采样与筛选示例,说明工作池传播、子协程继承及采样归属的限制。142 收藏 -
Go 中带类型元素的接口是泛型约束,不是可以保存运行时值的普通接口。本文用一个小型数字统计器说明报错原因,并给出具体类型、方法接口和类型参数三种正确落点。142 收藏 -
Go embed FS 资源加载失败时,保留逻辑资源名、失败阶段与底层错误链。小项目区分非法路径、资源不存在和模板解析错误,说明 ValidPath 不保证存在。141 收藏 -
strconv.ParseBool 只负责标准布尔文本,配置中的 yes/no 需要在入口处做显式兼容映射。本文说明接受范围、错误边界和一段可复用的 Go 配置解析写法。141 收藏 -
Go regexp.QuoteMeta 可以把用户输入中的正则元字符转成字面量。本文用固定表达式加用户片段的场景,说明安全拼接、错误处理和边界取舍。141 收藏 -
io.EOF 通常表示输入已经正常耗尽,不是业务失败。本文用 io.Reader 和 io.ReadFull 对比正常结束、数据未消费、结构化截断与真实读取错误的处理边界。141 收藏 -
Go errgroup 首个错误后其他任务仍运行,通常不是取消失效,而是 worker 没有监听派生 Context,或使用了零值 Group。本文拆开错误传播、取消信号与 Wait 收敛的边界,并给出可协作退出的代码结构。141 收藏 -
用 Go net/http Cookie 配置 SameSite 与 MaxAge,区分跨站发送策略、存活秒数和删除语义。141 收藏 -
解释 Go channel 关闭后 len 与 cap 的实际含义,演示如何用双值接收排空缓冲数据,并说明为什么不能用 len(ch)==0 判断关闭状态。141 收藏