Go教程技术文章
-
Go 1.24 的 time.Time.AppendText 可以把 RFC 3339 时间直接追加到复用的 []byte。本文说明如何在循环和写入路径中复用缓冲区、处理错误与字符串转换,并用 benchmark 判断分配是否真正下降。264 收藏 -
big.Int.FillBytes 会把绝对值写成左侧补零的大端固定长度字节串,并返回原缓冲区;容量不足时会 panic。本文给出最小用法、BitLen 容量检查、零值与负数边界以及复用测试。120 收藏 -
Go math/big.Float 应在写入数值前调用 SetPrec 设置二进制精度,再用字符串或有理数输入并让目标值承接运算;文中同时说明 Prec、Mode、Acc 的判断方法。313 收藏 -
Go 处理 0.1、19.90 等十进制字符串时,可直接调用 big.Rat.SetString,把输入保存为精确分数,避免先经 float64 引入二进制近似。本文讲清解析失败、精确运算、格式化输出以及与 big.Float、定点整数的选择边界。117 收藏 -
围绕 Go maphash.Hash 的内部缓冲、Reset、String/Bytes 和 sync.Pool,说明如何按输入形态复用哈希状态并定位真正的堆分配来源。463 收藏 -
Go maphash.Seed 只属于单个进程,不能序列化或跨进程重建。本文解释它与 Hash、Sum64 的关系,并给出保存稳定摘要、重启后重建内存分桶的 Go 实现方案。385 收藏 -
Go 的 maphash.Comparable 可以为满足 comparable 约束的值生成与 == 一致的进程内哈希。本文说明 Seed、碰撞处理和 ComparableHasher 的使用边界。407 收藏 -
本文演示 Go base32.NewDecoder 如何配合 io.CopyBuffer 流式解码大文件,并补充编码一致性、大小限制、错误处理和临时文件提交。206 收藏 -
本文演示 Go base32.NewEncoding 自定义 32 字节字母表的写法,说明唯一字符、UTF-8 字节、填充、大小写和跨系统兼容边界。115 收藏 -
本文说明 Go encoding/base32 的 CorruptInputError 如何表示首个非法输入字节偏移,并用 errors.As、UTF-8 位置换算、上下文切片和 padding 配置完成可读诊断。259 收藏 -
Go weak.Pointer 的比较规则能服务弱键映射,却不能替代业务 ID、持久句柄或对象存活证明。本文结合 Value、KeepAlive、终结器复活与内部指针边界,给出稳定 ID 和弱引用分离的实现方式。117 收藏 -
Go weak.Pointer 适合做不阻止对象回收的弱索引:业务代码保留强引用,索引只保存 weak.Pointer,读取时用 Value 判断对象是否仍可用,并在失效后删除旧条目。487 收藏 -
Go weak.Pointer.Value 返回 nil 不代表指针损坏,而是弱缓存对象已经不可达。本文用并发安全的缓存示例说明如何判断失效、回源重建、回填弱引用,并解释 GC 与 KeepAlive 的边界。273 收藏 -
Go unique 负责规范化可比较值,不提供 TTL、容量限制、手工失效、加载错误或命中统计。本文用服务配置场景拆分句柄层与缓存层,说明哪些需求必须继续使用业务缓存。467 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · go · slog · 日志排查 · 结构化日志 slog.Handler LogAttrs Go slog.GroupAttrs 空日志分组
Go slog.GroupAttrs 只负责构造组属性,符合契约的 Handler 会忽略没有有效属性的组。本文通过动态字段示例说明调用端条件追加、零 Attr 过滤与自定义 Handler 排查方法。455 收藏