Go问答技术文章
-
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 收藏 -
用逐行统计工具说明Scanner长行超限,区分初始缓冲、扫描预算与业务长度,处理Err和Bytes复用,并解释何时改用Reader分片。256 收藏 -
Go 的 encoding/csv.Reader 默认会把首条记录的字段数作为后续基准,遇到不等长行时返回 ErrFieldCount。本文用一个小型 CSV 清洗工具说明 FieldsPerRecord 的三种配置,并给出严格校验与宽松接收的处理方式。257 收藏 -
说明 go/types.Info.Implicits 的三类 AST 键值契约,展示 ImportSpec、CaseClause 和匿名参数 Field 的读取方式,并排查未填充映射、查询节点错误与 nil 对象边界。275 收藏 -
区分系统信任扩展与私有证书池,展示PEM加载、RootCAs及专用HTTP客户端绑定,定位主机名、证书链、有效期和容器环境导致的TLS失败。486 收藏 -
Go TLS 报证书主机名不匹配时,先不要关闭证书校验。本文按连接地址、SNI、SAN、IP 地址、通配符和代理入口逐项核对,并用 VerifyHostname 给出可复用的最小复核代码。453 收藏