Go语言技术文章
-
Go time.Time 取整时,Truncate 向下归入已开始的时间窗口,Round 选择最近的时间刻度。本文用代码和边界表对比两者结果,并说明 Location、负时间和非正 Duration 的处理方式。119 收藏 -
Bubble Tea 的 tea.Batch 适合互不依赖的命令并发组合,tea.Sequence 适合必须按顺序执行的命令。本文用原创 Go 示例说明两者的结果顺序、依赖关系、nil 命令与错误处理边界。119 收藏 -
Go Goldmark 默认按 CommonMark 解析 Markdown,表格语法需要显式接入 extension.Table。本文用一个最小 Go 示例说明 v1 的配置方式、Table 与 GFM 的选择、对齐输出和 v2 API 的迁移边界。119 收藏 -
围绕 Go database/sql 事务重试边界,说明怎样识别明确死锁错误、回滚完整事务、使用有限退避,并通过统一加锁顺序、幂等设计和提交不确定性避免把重试变成重复写入。119 收藏 -
用 Go time.ParseDuration 读取配置时长时,区分合法单位、空值默认、非法格式和业务范围校验,让超时与间隔配置在启动阶段可定位、可测试。119 收藏 -
Go 中直接调用 io.ReadAll 会把 Reader 读到 EOF。面对没有可靠长度的 HTTP 响应,应先做 Content-Length 预检查,再用 LimitReader 多读一个字节识别超限,最后把关闭、错误和解析边界统一处理。118 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
maps.Clone 只对 map 的键和值执行普通赋值,因此新旧 map 的顶层容器独立,但切片、指针、内层 map 等引用型值仍共享底层数据。本文通过示例说明边界,并给出切片、嵌套 map 与指针结构的深拷贝写法。118 收藏 -
go.mod 的 toolchain 只建议使用更高的首选工具链,不会把更新的本机 Go 降级。本文按 go.work、GOTOOLCHAIN、版本名称与下载条件排查未切换原因,并给出可复用的诊断命令。118 收藏 -
Go fuzzing 找到失败输入后,如何把大而难读的样本缩成稳定的回归语料?本文说明最小化参数、失败语料目录、生成语料缓存和修复后的 go test 回归流程。118 收藏 -
从 200、206 和 416 的响应症状出发,解释 Go net/http ServeContent 如何依赖 io.ReadSeeker 处理 Range 请求、获取内容长度和定位读取位置,并给出文件、自定义 Reader 与并发排障示例。118 收藏 -
用 maps.EqualFunc 比较两个 map 时,键仍按 == 判断,值则交给自定义函数处理。本文从跨类型值、大小写规则、缺键与 nil map 讲清 API 边界,并给出生产代码选型清单。118 收藏 -
Go weak.Pointer 的比较规则能服务弱键映射,却不能替代业务 ID、持久句柄或对象存活证明。本文结合 Value、KeepAlive、终结器复活与内部指针边界,给出稳定 ID 和弱引用分离的实现方式。117 收藏 -
Go 处理 0.1、19.90 等十进制字符串时,可直接调用 big.Rat.SetString,把输入保存为精确分数,避免先经 float64 引入二进制近似。本文讲清解析失败、精确运算、格式化输出以及与 big.Float、定点整数的选择边界。117 收藏 -
本文实现一个可包裹 slog.JSONHandler 或 TextHandler 的 SecurityHandler:在 Enabled 阶段过滤低级别事件,在 Handle 和 WithAttrs 阶段递归脱敏敏感字段,并正确保留分组、动态级别、下游错误与并发安全语义。117 收藏