Go问答技术文章
-
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 收藏 -
Go encoding/json 处理嵌入结构体时,如果同一层级出现同名字段,JSON 标签会参与候选筛选;唯一候选会被使用,多个同优先级候选则可能全部忽略且不报错。本文用最小示例拆开字段层级、标签优先级和排查方法。312 收藏 -
Go 处理大文件时,Scanner 和 Reader 都能流式读取,但选择依据不是文件总大小,而是单条记录长度、分隔符语义和错误控制需求。本文给出 Scanner.Buffer、Reader.ReadString 及 EOF 处理的落地判断。363 收藏 -
Go os.Rename 遇到已存在的目标目录会返回错误,不能把目录替换误当成文件覆盖。本文说明错误识别、非空目录保护、合并迁移与回滚边界。191 收藏 -
Go io.NewOffsetWriter 会把逻辑写入偏移映射到 WriterAt 的指定起点,但它不自动限制区间长度。本文用最小示例说明 Write、WriteAt、Seek 的偏移关系,以及如何补上长度检查。124 收藏 -
解释 go/types.Info.Defs 出现 nil 对象的正常语义与类型检查不完整边界,区分 package 名称、空白标识符、类型 switch 临时变量和重复声明,并给出 Defs/Uses 的安全诊断方式。284 收藏