Go语言技术文章
-
使用 Go x/text/runes.Map 按 Unicode 码点替换指定字符,掌握 transform.String、非法 UTF-8 边界以及 Map、Remove 的选择。317 收藏 -
用 github.com/gofrs/flock 的 TryLock 实现非阻塞进程互斥,区分 locked=false 与错误,安排 Unlock 清理,并用 TryLockContext 设置有限等待边界。317 收藏 -
说明 Go Lumberjack 的 LocalTime 为什么只影响轮转备份文件名,并用标准库 log 和自定义 formatter 分别配置日志正文时间格式。317 收藏 -
Go NATS 客户端的 Flush 只完成一次连接到服务器的往返确认,不代表异步消费者的回调已经执行完。本文区分服务器处理、客户端投递、业务完成和 JetStream ack,并给出可落地的判断方式。317 收藏 -
Go roaring 的 Bitmap.And/Or 会把结果写回当前对象,而 roaring.And/Or 返回新的位图。本文用集合示例、共享指针风险和回归清单说明如何选择,避免重构时误改输入集合。317 收藏 -
time.AfterFunc 的 Stop 返回 false 只说明定时器已经过期或停止,并不代表回调已经执行完。本文用 done 通知说明如何安全等待已启动的回调结束。317 收藏 -
Go 的 ast.CommentGroup.Text 面向文档文本,会去掉注释标记、整理空行,并过滤 //line、//go:noinline 等注释指令。本文对比 Comment.Text 与 Text 的职责,说明 ParseComments 的入口和源码工具中的选择方法。317 收藏 -
compress/zlib.NewReader 可能在创建读取器后才暴露校验错误。本文用完整消费数据的示例区分 NewReader 初始化错误、读取错误、截断错误和 zlib.ErrChecksum,并给出安全关闭读取器的写法。317 收藏 -
Go tcell 窗口缩小后出现旧字符残留,通常不是单个 SetContent 写错,而是 resize 后仍按旧尺寸局部绘制或终端显示与逻辑单元格失步。本文用 EventResize、Size、Sync 和 Clear 区分原因,并给出可复用的重绘写法。316 收藏 -
围绕 testing.F、f.Add、f.Fuzz 和 testdata/fuzz,说明 Go fuzz 测试怎样限制参数边界、控制探索预算,并把失败输入沉淀为普通 go test 可复现的回归样例。316 收藏 -
Go 的 math.Frexp 可以把 float64 拆成归一化尾数和二进制指数,math.Ldexp 再将两者重建为浮点数。本文给出最小写法、配对关系和特殊值边界。316 收藏 -
Go atomic.Value 的核心约束是同一个 Value 只能保存同一具体类型。本文从类型断言失败和 Store 冲突两个现象入手,给出配置快照、统一读取、copy-on-write 更新与并发边界检查的写法。316 收藏 -
Go testing/synctest.Sleep 把虚拟时间推进和气泡内等待稳定合并到一起。本文用一个时间驱动的 channel 示例,说明怎样在 synctest.Test 中快速测试延迟逻辑、避免同一时长竞争,并处理调用边界。316 收藏 -
Go regexp.Regexp.MatchReader 接收 io.RuneReader,可以在不先拼接完整字符串的情况下判断流式文本是否包含匹配。本文用 bufio.Reader 说明输入适配、编译错误、布尔结果和 Reader 消费边界。316 收藏 -
通过自动准备临时文件的Go示例,区分Glob有匹配、无匹配与模式语法错误,说明空切片处理和文件系统错误被忽略的限制。316 收藏