Go语言技术文章
-
Go fitsio 中主HDU与扩展HDU都实现统一的 HDU 接口,但位置、载荷和读取路径不同。本文用枚举、类型判断和表格读取示例说明如何区分 HDU(0)、图像扩展与表格扩展。207 收藏 -
用 Go list -json 查看包的 GoFiles、EmbedPatterns 和 EmbedFiles,区分参与构建的 Go 源文件、嵌入声明与最终匹配到的资源文件,并给出模板化提取方式。207 收藏 -
通过 Go html/template 小程序区分正常转义、预编码导致的重复转义和 URL 上下文过滤,说明输出源码与页面显示差异,以及 template.HTML 的可信内容边界。207 收藏 -
Go 的 bufio.Reader.Peek 只查看缓冲区数据,不会推进读取位置,但返回切片会在下一次读取后失效;如果忽略 Peek 错误或把普通 Read 当成精确读取,就会误以为数据不完整。本文用最小程序复现短读、ErrBufferFull 和正确的 io.ReadFull 修复方式。207 收藏 -
Go net/mail.ReadMessage 会把原始邮件拆成解析后的 Header 和可继续读取的 Body。本文说明如何按顺序读取头字段与正文流、处理重复字段和大小写,并把 multipart 正文交给下一层解析。207 收藏 -
解释 Go encoding/json 中 omitempty 对零值结构体不生效的原因,区分空值与 Go 零值,并给出指针字段和 omitzero 的选择方法。207 收藏 -
用 go/parser 生成 Go AST,再用 ast.Preorder 以迭代器形式完成深度优先前序遍历;同时比较 Inspect 与 PreorderStack 的控制边界,并处理解析错误、节点筛选和源文件位置。206 收藏 -
Go 使用 encoding/json 时字段为空,通常要按导出字段、struct tag 拼写和 Unmarshal 目标指针三个方向排查。本文用最小示例说明每种现象的原因与修复方式。206 收藏 -
Go pprof heap 看不出对象来源,应先区分分配调用栈和引用持有关系。结合离线分析命令,说明构建与源码匹配、存活和累计分配指标、采样边界及清理前后应观察的业务数据。206 收藏 -
Go netip.Addr.As16 会把 IPv4、IPv6 地址统一转换为 [16]byte。本文说明 IPv4 映射形式、IPv6 区域标识、零值 Addr,以及什么时候应该改用 As4 或 Unmap。206 收藏 -
Go EffectiveTLDPlusOne 需要公共后缀左侧再有一个标签。本文解释后缀本身被拒绝的原因,给出区分结果与错误的代码,并说明归并记录与规则快照的保存方式。206 收藏 -
Go encoding/xml 的 Decoder.Skip 可以在已经读到目标 StartElement 后消费完整嵌套子树,让流式解析继续到下一个同级节点。本文说明调用前提、游标位置、错误处理,以及 Skip 与 DecodeElement 的取舍。206 收藏 -
Go race detector 的创建栈用于追踪任务启动来源,访问栈用于定位冲突读写。通过任务编号、共享对象与互斥锁示例,说明如何确定同步责任并理解报告范围。206 收藏 -
本文从 root: 请求路径的实际问题出发,用 bytes.CutPrefix 解析协议前缀,再交给 Go 1.24 的 os.OpenRoot 和 Root.Open 读取受限根目录中的文件,并说明错误与关闭边界。206 收藏 -
os.Lstat 没有一个让它按配置决定是否跟随符号链接的开关:它固定描述链接条目,os.Stat 才描述目标。本文用 ModeSymlink、Readlink、相对路径基准和错误分支排查“配置没生效”的常见误解。206 收藏