Go语言技术文章
-
Go 配置文件不要直接截断写入。本文用同目录唯一临时文件、Write、Sync、Close 和 Rename 组织一次原子替换,说明失败清理、权限、并发读改写以及平台持久化边界。218 收藏 -
Go 的 archive/tar 只负责顺序读取归档条目,不会替业务自动决定输出目录边界。本文围绕路径穿越、绝对路径、符号链接、硬链接和设备节点,比较词法过滤、专用空目录与更强文件系统隔离三种方案,并给出一套拒绝危险类型、只写入目标目录的解包实现。120 收藏 -
用 go/parser 生成 Go AST,再用 ast.Preorder 以迭代器形式完成深度优先前序遍历;同时比较 Inspect 与 PreorderStack 的控制边界,并处理解析错误、节点筛选和源文件位置。206 收藏 -
用 embed.FS、fs.Sub 和 html/template.ParseFS 组织 Go 默认模板,说明包内构建边界、启动阶段解析和请求执行的错误处理方式。423 收藏 -
Go嵌入资源遍历需要区分原始文件系统与fs.Sub子视图的相对路径。本文通过完整代码说明WalkDir回调、目录跳过和同视图读取规则,避免路径混用。360 收藏 -
围绕 encoding/xml.Decoder.Token 讲清混合 XML 节点的顺序读取、StartElement 分派、CharData 处理和 Skip 跳过嵌套子树,给出可复用的 Go 遍历函数与边界处理方式。208 收藏 -
Go 解析 JSON 请求时,默认宽松解码、Decoder 严格校验和 RawMessage 扩展区分别适合什么场景?本文用原创示例说明未知字段、必填校验与接口演进的取舍。397 收藏 -
Go 的 json.Decoder 可以从 io.Reader 连续读取多个顶层 JSON 值。本文区分单对象、空白分隔对象流和 JSON 数组,给出 EOF 边界、错误处理与可复用读取函数的设计方式。134 收藏 -
Go大CSV可用Reader循环同步处理,避免全量保存。本文给出三字段统计示例,说明字段检查、ReuseRecord所有权、超大记录与下游积压如何影响内存上界。199 收藏 -
使用 Go 的 debug/elf 打开 ELF 文件后,可以调用 File.ImportedLibraries 读取动态链接阶段需要的库名。本文给出完整的错误处理、资源关闭和空结果判断方式,避免把动态依赖、导入符号和运行时实际加载结果混为一谈。219 收藏 -
Go crypto/tls 用 CurveID 表示密钥交换组,CurvePreferences 决定显式支持范围。本文说明传统组、X25519 与混合后量子组的配置边界,并给出握手结果检查清单。402 收藏 -
Go 的 image.Image 不要求调用方先知道图片一定是 Gray 还是 RGBA。本文从 ColorModel 与 At 出发,说明怎样统一读取像素、处理预乘 alpha,并在确实需要时转换成稳定的 Gray、RGBA 或 NRGBA 类型。291 收藏 -
Go 的 net/http/pprof 默认注册到 DefaultServeMux;业务服务使用自定义 ServeMux 时,需要显式把 Index、Handler、Profile、Symbol 和 Trace 注册到诊断 mux,再交给独立 HTTP Server。491 收藏 -
Go embed FS 资源加载失败时,保留逻辑资源名、失败阶段与底层错误链。小项目区分非法路径、资源不存在和模板解析错误,说明 ValidPath 不保证存在。141 收藏 -
Go expvar.Map 可以把按接口、缓存或队列维度拆分的统计值组织成一个指标映射,再用 Publish 注册到 expvar 全局变量表。本文说明 Add、Set、Get、Delete 与 Publish 的职责边界,以及并发更新和键名设计要点。385 收藏