Go教程技术文章
-
Go 1.27 为 go test -json 的 output 事件增加可选 OutputType。本文用兼容解析器讲清 frame、error、error-continue 与空值的处理方式,以及多行错误如何合并而不丢失原始输出。266 收藏 -
Go big.Rat 转小数时,先保留精确有理数,再用 FloatString 指定小数位;不要提前转 float64。本文说明 FloatString、FloatPrec 和 big.Float 的精度边界,以及金额、比例等场景的选择。266 收藏 -
说明 Go bufio.Writer 在 Write 或 Flush 失败后的正确收尾:仍然关闭底层资源,区分并组合写入、Flush、Close 错误,避免错误锁存后的无效重试。266 收藏 -
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 的 hash/maphash 用 Seed 把哈希随机性与具体计算分开。本文通过可运行示例说明 MakeSeed、Seed 复用、Hash.SetSeed 与不可序列化边界,帮助你在内存索引中稳定使用它。265 收藏 -
用 Go tls.Config.GetCertificate 根据 SNI 动态选择证书,覆盖精确匹配、通配符、默认回退、并发读取与热更新边界。265 收藏