Go语言技术文章
-
go mod graph 会把模块需求图按一行一条边打印出来,适合查看主模块、传递依赖、版本要求和 replace 后的关系。本文说明输出格式、筛选方法,以及它和 go list -m all、go mod why 的区别。388 收藏 -
区分Go pprof中的CPU样本、采集窗口与业务墙钟时间,通过原创采集示例理解flat、cum和百分比分母,说明等待与并行如何影响读数,以及何时补充trace或业务计时。197 收藏 -
Go benchmark 调用 testing.B.ReportAllocs 后,可以在结果中看到 allocs/op 与 B/op。本文说明如何放置调用、排除准备阶段、比较子 benchmark,并处理 b.Loop、b.N 和 RunParallel 的统计边界。477 收藏 -
Go fuzz 测试里的种子参数不是从 *testing.F 再取一次,而是由 f.Fuzz 回调的参数直接接收。本文用 string、[]byte 和 int64 示例说明 f.Add、回调签名、默认 go test、持续 fuzz、失败输入复现与 testdata/fuzz 的选择边界。221 收藏 -
解析网络帧、文件头或自定义二进制格式时,字段长度和字节序必须同时明确。本文用 Go encoding/binary 的 BigEndian、ByteOrder 和 Read 说明如何读取固定长度字段,并处理短输入、结构体填充与读取方式选择。379 收藏 -
围绕 Go encoding/hex.Decode 的 InvalidByteError,说明如何提取非法字节、计算输入位置、区分奇数长度 ErrLength,并封装成可读的解码诊断。432 收藏 -
Golang · Go教程 | 2天前 | errgroup · 错误处理 · Context · 并发编程 · Go教程 · Go context 并发任务 errgroup WithContext
Go errgroup.WithContext 会在第一个任务返回非空错误时取消派生上下文,Wait 等待已启动的任务结束后返回第一个错误。本文用可取消的并发示例说明任务函数、结果通道、SetLimit 与退出顺序的写法。213 收藏 -
说明Go channel用range消费直到关闭的方法,给出单生产者与多生产者示例,区分缓冲读空、有效零值、关闭权、取消和业务完成。381 收藏 -
用 Go select 同时等待两个输入 channel,讲清接收分支、value 与 ok 的关闭判断、两路输入汇总,以及 default 和阻塞等待的适用边界。228 收藏 -
用 Context.Deadline 和 time.Until 计算 Go context.WithDeadline 的有效剩余时间,并区分无 deadline、提前取消、已经超时以及父 Context 更早截止等边界。168 收藏 -
Go sync.Mutex.TryLock 用 bool 结果表示本次是否立即拿到锁:true 才能进入临界区并负责 Unlock,false 不会建立同步关系。本文结合可跳过任务说明判断、解锁和使用边界。384 收藏 -
Go sync.Map 并不是所有并发 map 的默认替代品。本文从只写一次多次读取、互不重叠键集合两个官方优化场景出发,结合 LoadOrStore 示例说明它和 map 加 RWMutex 的取舍,以及 Range、类型安全和复制限制。135 收藏 -
Go 反射读取指针指向的结构体字段时,需要先解引用并处理 nil、无效 Value、字段不存在和未导出字段。本文用一个通用读取器说明 ValueOf、Indirect、FieldByName 与 CanInterface 的协作顺序。501 收藏 -
讲清 Go html/template.JSEscapeString 的字符串级 JavaScript 转义边界,用最小示例对比 HTML、JavaScript 与 URL 语境,并说明何时应交给 html/template 自动处理,避免重复转义和不安全的可信类型。202 收藏 -
Go 反射中判断类型是否实现接口,应使用 reflect.Type.Implements。本文说明如何构造接口类型、处理 T 与 *T 的方法集差异、规避 nil 和非接口参数问题,并比较 Implements 与 AssignableTo 的适用场景。436 收藏