Go教程技术文章
-
用embed.FS嵌入报表模板,按目录加载并复用解析结果,结合语义化HTML说明批处理分配、输出职责与模板更新边界。370 收藏 -
围绕 go/parser 与 go/ast 说明如何从 TypeSpec.TypeParams 提取泛型类型参数,正确处理 Field.Names 的多名称共享约束,并区分类型声明与泛型实例化。370 收藏 -
Go 的 Base64 解码器会忽略 MIME 输入中的 CR/LF。本文比较 DecodeString、Decode 与 NewDecoder 的适用场景,并说明如何区分换行、非法字符、截断和部分结果。370 收藏 -
Go embed.FS 会把匹配到的目录作为一棵只读文件树交给程序。本文用 io/fs.Sub 切出指定子目录,让 HTTP 静态文件和模板只看到自己的资源根,并说明路径、错误和测试边界。369 收藏 -
Go os.File.Sync 成功后仍然需要 Close。本文区分持久化与释放句柄的职责,说明缓冲写入先 Flush、关键文件正确处理 Close 错误,以及替换文件时的收尾顺序。369 收藏 -
Go json.RawMessage 通过标准库解码时会复制输入,但手动切片转换仍可能共享底层字节;本文说明如何在延迟解析、队列和并发边界前建立独立所有权。369 收藏 -
用 Go encoding/json 的 json.RawMessage 先读取联合字段判别值,再将 payload 延迟解析到具体结构体,并区分未知类型、null、格式错误和字段类型错误。369 收藏 -
Go 的 database/sql Conn.Raw 只能在回调期间访问底层驱动连接。本文说明如何取得专用 Conn、判断驱动能力、处理 driver.ErrBadConn,并解释为什么不能把 driverConn 保存到回调之外。369 收藏 -
用一个清晰的 secret.Do 封装把密码处理函数放进机密边界,讲明输入所有权、结果复制、实验开关、panic 与平台限制。369 收藏 -
用 io.NewSectionReader 限定大文件分片范围,再通过 io.TeeReader 同时写入输出流并计算 SHA-256。本文给出边界检查、短读处理和多分片拆分的完整写法。369 收藏 -
用 io.MultiWriter 把文件与 hash.Hash 组合为一个 Writer,单次读取源流即可落盘并计算摘要;通过完整示例解释写入顺序、复制及关闭错误、缓冲与字节层选择,避免返回无效结果。369 收藏 -
使用 Go encoding/csv 正确读取带引号的多行字段,掌握 FieldsPerRecord、LazyQuotes 与 ParseError 的边界。369 收藏 -
Go encoding/json/v2 默认把 nil map 编码为空 JSON 对象。本文说明怎样用 FormatNilMapAsNull 恢复 null 语义,并给出字段级覆盖与迁移回归清单。369 收藏 -
本文用 embed.FS 和 fs.Glob 演示如何按层级模式查找嵌入文件,说明路径根、通配符、无匹配结果、错误模式与 fs.ReadFile 的衔接,并补充 fs.Sub 缩短匹配根的写法。369 收藏 -
用go-message/mail的NextPart识别附件并逐个保存,示例涵盖流式复制、独立文件名、大小与数量限制,以及页面如何呈现部分成功和失败结果。369 收藏