Go问答技术文章
-
CommentMap 记录注释与 AST 节点的关联,但 go/printer 仍按 token.Pos 把 File.Comments 穿插到输出中。本文说明删除、替换和移动节点时注释错位的根因与修复方法。393 收藏 -
Fscan 把换行视为普通空白,可跨行读取参数;Fscanln 在换行处停止,并要求最后一个参数后紧接换行或 EOF。本文用同一输入说明选择与错误边界。100 收藏 -
Go 的 fmt 在格式化实现 Stringer 的值时会调用 String;如果 String 再把原接收者交给 fmt,就可能反复分派。本文给出复现、修复与方法集边界。267 收藏 -
Go flag.Parse 放在 init 中并非语法错误,但可能早于同包其他 flag 的注册,导致未知参数、默认值未生效或参数边界被提前消费。本文用初始化顺序和 FlagSet 示例说明正确修复方式。157 收藏 -
Golang · Go问答 | 4天前 | 标准库 · HTTP服务 · 可观测性 · Go问答 · Go expvar http.ServeMux expvar.Handler /debug/vars 运行指标
解释 Go expvar.Handler 与默认 /debug/vars 的关系:两者输出同一份全局变量,区别在路由注册方式、ServeMux、访问路径和方法限制,并给出自定义挂载、访问控制与 httptest 验证示例。386 收藏 -
Go errors.Is 已经负责沿 Unwrap 展开错误树,自定义 Is 只应判断当前节点。本文用原创示例说明递归调用 Unwrap 的重复遍历、语义越界和循环风险,并给出可复用的错误类型写法。316 收藏 -
errors.Join 会先丢弃 nil,并统计剩余错误;当非 nil 数量为零时直接返回 nil。文章结合结果矩阵、标准库源码、错误树检查和 typed nil 边界说明这一设计。284 收藏 -
说明 Go xml.Decoder.Strict=false 会修补哪些标签、实体和属性问题,并区分 AutoClose、Entity、输入限制与业务校验的职责。139 收藏 -
Go 默认把解码到 interface{} 的 JSON 数字变成 float64,UseNumber 则先保留为 json.Number。本文用示例说明精度变化发生在哪里、如何解析以及金额等场景的边界。463 收藏 -
Go gob 的接口字段会携带动态具体类型名称,接收端必须预先知道该名称对应的本地类型。本文说明 Register、RegisterName、指针类型与跨进程注册表的正确用法。374 收藏 -
Go 的 csv.Reader 默认拒绝字段内裸双引号。开启 LazyQuotes 后,非引号字段可包含双引号,引号字段也可出现非成对双引号,但逗号、换行和字段数规则仍然生效。486 收藏 -
binary.Varint 的第二个返回值小于零表示 64 位溢出,绝对值是已读取字节数。本文拆解三态返回、缓冲区推进、ReadVarint 选择与边界测试。187 收藏 -
Go base64.DecodeString 返回 CorruptInputError 时,错误值就是需要排查的零基字节偏移。本文用 errors.As 提取位置,结合上下文、字母表、补位、UTF-8 和 Strict 模式,区分非法字符与输入截断。216 收藏 -
解释 Go //go:embed 为什么在目录递归时排除以点号或下划线开头的文件,比较目录名、当前层通配符与 all: 前缀的差异,并给出精确嵌入、结果检查和安全边界。483 收藏 -
Go debug/dwarf.Reader.SkipChildren 只在不需要读取当前 Entry 后代时调用。本文用 Entry 树、Children 标记和 Tag 0 说明剪枝位置,并给出完整遍历与选择性遍历的判断表。197 收藏