Go问答技术文章
-
Go 设置 GOMAXPROCS 后吞吐没有提升,先区分 CPU 配额、I/O 等待、锁竞争和串行边界,再用固定负载对照测试选择并行度。342 收藏 -
Golang · Go问答 | 2星期前 | 切片 · 标准库 · 性能 · 编码 · Go问答 · Go 文本格式化 encoding.TextAppender AppendText TextMarshaler 低分配
Go 1.24 新增的 encoding.TextAppender 允许类型把文本直接追加到调用方已有的 []byte。本文用一个自定义类型说明 AppendText 的实现、缓冲区边界、错误返回,以及怎样与 TextMarshaler 保持兼容。342 收藏 -
解释 os.DirFS 与 fs.ValidPath 只能约束 fs 路径语法,为什么仍挡不住根目录中的符号链接或相对根目录变化,并给出使用 os.Root 的迁移方式。342 收藏 -
Go time.After 在高频循环中会反复创建一次性 Timer,额外成本来自创建、运行时调度和回收路径。本文解释 Go 1.23 的回收语义,并给出复用 Timer 的判断与写法。342 收藏 -
Go io.ReadAtLeast 会根据已读字节数、min 和缓冲区长度返回不同结果。本文从固定长度读取故障出发,拆解短读、EOF、ErrUnexpectedEOF 与 ErrShortBuffer 的判断方式,并给出可复用的修复和防复发写法。342 收藏 -
性质测试适合输入域宽、确定性强且能写出不变量的函数;示例断言更适合少量关键业务边界、精确输出和外部状态行为。本文结合 Go 原生 fuzzing,给出选择矩阵、幂等性示例、反例与混合测试清单。341 收藏 -
敏感信息进入 Go 日志后,不能只靠调用点自觉替换。本文先说明已泄露日志的止损,再用 slog LogValuer、ReplaceAttr 和统一 Logger 装配建立多层脱敏,并列出嵌套字段、自由文本与旁路输出的验证清单。341 收藏 -
自定义 slog.Handler 重复输出属性,通常源于 WithAttrs 修改共享切片、WithGroup 重复展开或 Handle 合并了两次。本文按属性来源、不可变派生和分组作用域给出排查与修复方法。341 收藏 -
面向以 -cover 构建的长期运行程序,说明 Go runtime/coverage.WriteCountersDir 生成的计数快照如何与匹配的元数据配合,并用 go tool covdata 做汇总分析。341 收藏 -
解释Gonum Poisson的Lambda为何是固定窗口平均次数,通过速率换算和理论概率对比区分成功概率,并说明二项分布、样本估计与零均值边界。341 收藏 -
说明 Go ast.PreorderStack 如何把祖先节点栈传给回调,解释 stack 不含当前节点、返回 false 跳过子树和初始栈参数的边界,并对比 Preorder 与 Inspect。341 收藏 -
runtime.KeepAlive 本身没有错误返回值。本文从受保护的资源操作入手,说明如何保留 n 和 err,再用 errors.Is、errors.As 区分中断、句柄失效与其他底层原因,并把 KeepAlive 放在正确的生命周期边界。341 收藏 -
Go regexp.FindAllStringIndex 返回非重叠区间是设计行为,不是漏查。本文用 aba/ababa 说明左到右的匹配推进、n 参数的真实作用和 UTF-8 字节下标,并给出按 rune 起点推进的外部游标方案来收集重叠结果。341 收藏 -
Go container/list.MoveAfter 传入同一个节点时不会改变顺序,因为 e == mark 没有新的位置;本文进一步区分节点值相同、已经相邻和跨链表节点的边界。340 收藏 -
Go flag.BoolFunc 每次遇到开关都会回调。通过 ParseBool 与局部累计对象保留重复布尔值,区分出现次数、真值次数和最后状态,并说明显式 false、解析错误与状态重用的边界。340 收藏