Go教程技术文章
-
讲清 Go bufio.Reader.Peek 预读固定协议头时的参数、缓冲区和切片生命周期边界,并用 8 字节 TCP 协议头示例处理 ErrBufferFull、截断输入、长度校验与安全消费。265 收藏 -
Go Fuzz 的种子语料可以分成代码里的 f.Add 样本和 testdata/fuzz/FuzzTestName 目录语料。本文用一个可迁移的 FuzzDecode 示例说明两种来源怎样配合、目录文件怎样命名、参数类型怎样对齐,以及失败样本如何沉淀为回归用例。265 收藏 -
Go map 的 range 顺序没有稳定保证。本文用收集键、排序键、按键取值的方式实现可重复输出,并补充整数键、按值排序、JSON 序列化和测试快照的边界。265 收藏 -
Pond v2 默认队列近似无限,使用 WithQueueSize 设置等待容量,再用 TrySubmitErr 或 WithNonBlocking(true) 在容量用尽时拒绝超额任务;文章还说明运行数、排队数与收尾方式的区别。265 收藏 -
Go bytes.CutPrefix 返回去掉前缀后的字节切片和 found 标记,适合判断输入是否以指定前缀开头。本文用原创示例说明匹配成功、前缀缺失、空前缀和底层切片复用边界,并把后续业务校验独立出来。265 收藏 -
Go 1.24 的 time.Time.AppendText 可以把 RFC 3339 时间直接追加到复用的 []byte。本文说明如何在循环和写入路径中复用缓冲区、处理错误与字符串转换,并用 benchmark 判断分配是否真正下降。264 收藏 -
Go time.AfterFunc 返回的 Timer 可以用 Stop 取消尚未启动的回调。本文按 Stop 的 true、false 两种结果说明取消窗口与竞态边界,并给出需要等待回调结束时的显式同步写法。264 收藏 -
用 httputil.DumpRequestOut 导出 Go 客户端请求的脱敏元数据视图,隔离 URL、Header 和共享 Body,说明离线测试、敏感字段处理与真实传输的差异,全程无需读取业务响应。264 收藏 -
Go context 没有直接合并多个取消来源的通用函数,可以用派生的 WithCancelCause 作为汇合点,再用 AfterFunc 转发第二个来源。本文说明取消原因、清理函数、旧版本降级和 goroutine 回收边界。264 收藏 -
Go 通过 Lookup 与 WriteTo 读取 goroutineleak profile,可按用途选择文本或二进制输出。本文提供错误处理与文件保存示例,说明 Go 1.27 版本变化、空结果限制和受控诊断入口的边界。264 收藏 -
Go 1.24 起可以用 os.Root 把文件操作约束在指定目录树内。本文用一个上传目录示例说明 OpenRoot、Root.Open、Root.OpenFile 的相对路径用法,以及软链接、关闭和平台边界。264 收藏 -
Go archive/tar 的 Header.Xattrs 会被写成 PAX 的 SCHILY.xattr.* 记录。本文用一个紧凑示例说明怎样显式选择 PAX、怎样处理 PAXRecords 覆盖关系,以及键名和资源关闭的边界。264 收藏 -
Go go tool nm 可以列出目标文件、归档或可执行文件中的符号。本文解释地址、类型、名称三列输出,并用排序、类型参数和命令行过滤快速定位目标函数。264 收藏 -
Go Testify 的 mock 期望遇到复杂请求结构体时,不必比较全部字段。本文用 MatchedBy 只匹配用户编号、动作等业务关键字段,并拆解值类型、指针、nil 与函数签名边界。264 收藏 -
Go 的 ed25519.PrivateKey.Public 会返回对应的 crypto.PublicKey。本文说明如何把它安全地断言为 ed25519.PublicKey,理解 64 字节私钥中的公钥后缀,并区分公钥派生、种子恢复与重新生成密钥。264 收藏