Go教程技术文章
-
Go Scanner 默认 token 缓冲约为 64 KiB,超长日志行会让 Scan 停止。本文说明如何在首次 Scan 前设置 Buffer、如何处理 Err,以及何时改用 bufio.Reader。266 收藏 -
Go 测试可以用 t.TempDir 管理临时目录,用 t.Cleanup 登记文件、服务和自定义资源的释放动作。本文从最小示例出发,说明清理时机、逆序执行、子测试边界和可复用辅助函数的写法。266 收藏 -
Go benchmark 会把计时从 benchmark 开始处算起,初始化放错位置就会污染 ns/op。本文用 ResetTimer、StopTimer/StartTimer 和 benchmem 说明怎样只测目标操作。266 收藏 -
Go crypto/ecdh.PrivateKey.ECDH 使用本地私钥和对端公钥计算共享密钥,前提是两把密钥使用同一条曲线。本文用 P256 示例说明两端配对、错误处理以及共享密钥进入 KDF 或 AEAD 前的边界。266 收藏 -
Go testing.B.Loop 会把循环前后的初始化和清理排除在计时之外,但不会替你保证循环体的计算结果仍然可观察。本文说明如何避免无副作用调用被编译器优化掉,并梳理 b.Loop 的语法与适用边界。266 收藏 -
gofpdf 的内部跳转不是给 PDF 拼接 URL,而是先用 AddLink 创建文档内链接标识,再用 SetLink 绑定目标页和位置,最后通过 WriteLinkID 或 CellFormat 把目录文字变成可点击入口。本文还说明它与 Bookmark 的区别以及跨页生成时的组织方式。266 收藏 -
Go KSUID的完整二进制为20字节,区别于27字符Base62文本。本文给出固定记录保存与恢复函数,说明SQL默认值接口、短写、截断记录和旧数据迁移回退的处理方式。266 收藏 -
Go structs.HostLayout 用于标记结构体采用主机内存布局,通常遵循主机 C ABI。本文说明标记位置、unsafe 布局检查方法,以及嵌套结构体、packed struct、位域和 cgo 互操作的边界。266 收藏 -
Go bufio.Reader 读取长记录时,使用 ReadBytes 处理单字节分隔符与 EOF 尾部数据;需要业务长度上限时,用 ReadSlice 分片复制并在追加前限制累计字节数。266 收藏 -
用 runtime/trace.NewTask 把跨 goroutine 的一次逻辑操作关联到同一个 Context,说明 Region、Log、Task.End 与 trace 文件收集的配合方式。266 收藏 -
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 time.AfterFunc 返回的 Timer 可以用 Stop 取消尚未启动的回调。本文按 Stop 的 true、false 两种结果说明取消窗口与竞态边界,并给出需要等待回调结束时的显式同步写法。264 收藏