Go语言技术文章
-
本文解释 Go CompareAndSwap 为什么只能确认当前值,沿着 A→B→A 时序说明 ABA 风险,并给出指针与版本号绑定、生命周期和重试边界的处理方法。466 收藏 -
围绕 Go maphash.Hash 的内部缓冲、Reset、String/Bytes 和 sync.Pool,说明如何按输入形态复用哈希状态并定位真正的堆分配来源。463 收藏 -
本文解释 Go 原子类型为何禁止首次使用后复制,演示副本如何变成独立内存位置,并给出指针所有权、API 设计和 go vet 排查方法。217 收藏 -
本文解释 atomic.Value 首次写入如何固定具体类型,分析值与指针、接口动态类型、nil 写入导致 panic 的原因,并给出稳定包装类型的安全方案。268 收藏 -
Go maphash.Seed 只属于单个进程,不能序列化或跨进程重建。本文解释它与 Hash、Sum64 的关系,并给出保存稳定摘要、重启后重建内存分桶的 Go 实现方案。385 收藏 -
本文解释 cgo 回调为什么需要用 //export 生成 C ABI 可见入口,并给出 C 桥接层注册回调、runtime/cgo.Handle 传递上下文的完整边界。175 收藏 -
Go 的 maphash.Comparable 可以为满足 comparable 约束的值生成与 == 一致的进程内哈希。本文说明 Seed、碰撞处理和 ComparableHasher 的使用边界。407 收藏 -
本文演示 Go base32.NewDecoder 如何配合 io.CopyBuffer 流式解码大文件,并补充编码一致性、大小限制、错误处理和临时文件提交。206 收藏 -
本文解释 cgo 中 C 代码为什么不能随意长期保存 Go 指针,并对比 runtime/cgo.Handle、runtime.Pinner 与 C 自有内存三种安全方案。245 收藏 -
Go cgo 交叉编译出现 C compiler not found,通常是交叉编译启用了 cgo,却没有把 CC 指向目标平台的 C 编译器。本文按环境变量、编译器匹配、sysroot 与无 cgo 回退路径逐层排查。463 收藏 -
本文演示 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 模块代理返回 404 和 410 时,命令通常都会按 GOPROXY 顺序回退;真正需要排查的是请求资源、分隔符和其他终止错误。本文用下载命令拆开判断路径。107 收藏 -
Go vendor 目录已经更新却仍提示依赖不一致,通常是 vendor/modules.txt 与 go.mod 的 require、replace 或显式标记不同步,或在 workspace 中用了单模块命令。本文给出完整排查流程。408 收藏