Go语言技术文章
-
Go sync.Pool 适合可重建临时对象,不能承担业务缓存的按键读取、过期与命中承诺。结合缓冲复用代码说明输出复制、归还后引用和容量控制。447 收藏 -
Go encoding/xml 的 InputOffset 返回当前解析器的字节偏移,既是最近返回 token 的结束位置,也是下一个 token 的起始位置。本文用流式 token 记录和错误上下文示例说明调用时机、字节与行列的区别,以及 UTF-8 和 EOF 边界。422 收藏 -
Go image.YCbCr 的 Cb 和 Cr 不是总与 Y 像素一一对应。本文用 COffset、SubsampleRatio、Rect.Min 和 CStride 说明下采样后的色度索引计算,并给出安全读取示例。217 收藏 -
Go flag.FlagSet.Visit 只遍历 Parse 后被用户显式设置的参数,适合记录命令行覆盖项;VisitAll 用于完整参数表,Lookup 用于单项查询。本文用配置覆盖和诊断日志场景说明三者边界。104 收藏 -
Go select 一旦包含 default,在没有可进行通信时就会立即执行。把它放进消费 for 循环会让循环持续重试,表现为 CPU 升高但没有有效消费。本文从故障症状、阻塞式修复、取消与关闭 channel 处理,到必须轮询时的退避边界,给出一套可直接套用的处理方式。456 收藏 -
Go HTTP 请求已经取消,但 Handler 仍不退出时,先确认 Context 信号,再按下游调用、channel、锁和响应写入逐层定位真正的阻塞点。229 收藏 -
Go BitString.RightAlign 将填充位放到返回字节的开头。通过五位和跨字节示例理解对齐,并处理共享内存、独立复制、位长保留及 DER 解析边界。378 收藏 -
Go 关闭 channel 触发 panic,通常是关闭责任没有收口:nil channel、重复关闭和向已关闭 channel 发送分别对应不同的生命周期错误。本文用发送方所有权、协调者收口和接收端 ok 判断整理排障与迁移边界。262 收藏 -
Go 循环中直接 defer file.Close 会把关闭动作推迟到外围函数返回。本文用单文件函数隔离资源生命周期,并说明读取错误、关闭错误和文件描述符复查边界。426 收藏 -
Go 中 goroutine 把结果发送到无人接收的 channel 时,发送操作可能永久阻塞。本文用 context 的取消分支修复泄漏,并用固定取消次数、goroutine 增量和资源边界说明何时该用缓冲区、何时必须让底层工作也支持取消。438 收藏 -
iter.Seq2 是 Go 1.23 引入的双值迭代器类型,range 左侧最多接收键和值两个变量。本文用 map、slice 和自定义迭代器说明绑定顺序、提前停止与 iter.Pull 的边界。190 收藏 -
Go ECDH 公钥接入时,应区分原始编码、PKIX DER 和 PEM 文本。本文用显式解析与类型分支说明 NIST 公钥对象转换,并解释为什么转换不会改变曲线。270 收藏 -
讲清 Go io/fs 中 FileInfo.Mode、ModeDir 与 IsDir 的关系,并比较 DirEntry、Stat、Lstat 在目录类型判断中的使用边界。262 收藏 -
Go 把 typed nil 指针放进 interface 后,接口本身通常已经带有动态类型,因此直接与 nil 比较不会得到 true。本文从 error 返回场景复现原因,再给出源头修复、类型断言和受限反射三种判空方案。239 收藏 -
Go JSON null 会清空普通指针字段,但字段缺失与整数零有不同含义。通过独立快照、RawMessage 和存在标志处理配置更新,避免 nil 解引用与旧值残留。417 收藏