Go语言技术文章
-
用结算应用与计价库两个模块说明 go work init 和 go work use 的加入方法,区分目录路径与导入路径,并解释递归收集、成员移除、GOWORK 以及独立发布边界。288 收藏 -
go env -changed 只显示 Go 工具链有效值与默认值不同的设置。本文解释它的比较边界、空结果含义,并配合 go env -json、-w、-u 快速定位和清理自定义配置。191 收藏 -
用 go list -m -json 导出 Go 模块的路径、版本、目录、go.mod、替换关系和更新信息,说明连续 JSON 解析及主模块、构建列表、版本查询的边界。451 收藏 -
用 go tool pprof 的 sample_index 切换内存 profile 的采样值,分清 inuse_space、inuse_objects、alloc_space 与 alloc_objects,并说明交互命令、命令行参数和索引边界。403 收藏 -
Go 随机测试失败后,保存 shuffle 种子并重放原测试集合。用双测试小项目解释共享状态与独立实例修复,补充 CI 日志记录和并发复现边界。174 收藏 -
Go 的 iotest.TimeoutReader 专门用于测试 Reader 的超时分支:有限数据读完后,第二次无数据读取返回 iotest.ErrTimeout,后续读取又恢复成功。本文用一个小测试说明调用顺序、断言方式和常见边界。292 收藏 -
Go testing.B.Loop 会把循环前后的初始化和清理排除在计时之外,但不会替你保证循环体的计算结果仍然可观察。本文说明如何避免无副作用调用被编译器优化掉,并梳理 b.Loop 的语法与适用边界。266 收藏 -
Go testing.T.FailNow 只能由运行测试函数的 goroutine 调用。本文解释 FailNow、Fail 和 Fatal 的停止语义,说明子 goroutine 误用为何导致误通过或清理失控,并给出错误回传、取消和等待 worker 的安全组织方式。383 收藏 -
Go debug.SetMemoryLimit 可以给 runtime 设置按字节计算的软内存目标。本文按值班手册说明适用环境、容器余量、运行时指标、持续 GC 判断和回滚方式。477 收藏 -
Go runtime/metrics 通过 All 返回当前支持的指标描述。本文演示怎样按 Name、Description、Kind 和 Cumulative 筛选指标,并安全创建 Sample 读取,兼顾不同 Go 版本的支持集合差异。374 收藏 -
Go math/big.Int.CmpAbs 专门比较两个大整数的绝对值,适合处理负数参与的幅度、阈值和排序判断。本文对比 Cmp 的有符号语义,说明返回值、零值、指针和迁移边界。413 收藏 -
Go atomic.Bool 适合维护读多写少的服务开关。本文从请求判断、管理侧切换、Swap 与 CompareAndSwap 的差异出发,说明零值、不可复制和不撤销已开始任务等边界。235 收藏 -
sync.Map.CompareAndDelete 可以在 key 的当前值仍等于旧值时删除映射项,适合处理并发缓存和临时索引清理。本文说明 bool 返回值、不可比较旧值、缺失键和与普通 Delete 的边界。135 收藏 -
用 sync.Cond 把空队列等待、生产者入队和消费者唤醒连起来,重点说明 Wait 必须放在条件循环中,以及 Signal、Broadcast 和退出处理的边界。228 收藏 -
Go multipart.Reader.NextPart 适合边读取边处理 multipart 请求体。本文说明如何解析 boundary、逐段区分普通字段和文件字段、正确处理 io.EOF,并用流式复制与文件名边界避免大文件一次性进入内存。372 收藏