Go语言技术文章
-
Go 中 WithDeadline 和 WithTimeout 得到的截止时间不一致,通常来自调用时刻不同或父 Context 更早过期。本文按故障现场、父子截止约束和剩余预算说明排查与修复边界。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 的 http.Cookie 通过 SameSite 生成 Set-Cookie 属性,但是否在跨站请求中发送由浏览器决定。本文比较 Strict、Lax、None 的边界,并给出 Go 服务端的配置与排查方法。266 收藏 -
Go testing.B.Loop 会把循环前后的初始化和清理排除在计时之外,但不会替你保证循环体的计算结果仍然可观察。本文说明如何避免无副作用调用被编译器优化掉,并梳理 b.Loop 的语法与适用边界。266 收藏 -
Go INI LooseLoad 通过 Loose 选项跳过不存在的文件,不会忽略权限或解析错误。本文用必需主配置与可选覆盖层示例,说明路径错误、数据源类型和业务参数要求的边界。266 收藏 -
解释go-i18n多个语言偏好参数、Accept-Language权重与消息回退的不同作用,使用LocalizeWithTag观察文本、实际语言及错误。266 收藏 -
Gonum interp 中的 FritschButland 与 NaturalCubic 都是分段三次插值,但前者优先保证局部单调并只做到 C¹,后者保证 C² 连续并采用自然边界。本文用同一组 Go API 说明两者的选型、输入限制和区间外边界。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 收藏