Go教程技术文章
-
io.MultiWriter 会按传入顺序逐个写入,某个 Writer 返回错误或短写入后立即停止,不会继续后面的目标。本文用日志分流场景拆解部分写入、ErrShortWrite、重试与一致性边界。279 收藏 -
Go 中 bytes.Buffer 适合逐步写入并把内容交给下游读取,bytes.Reader 适合只读字节切片、定位游标和重复读取。本文用一个小实验拆开两者的状态变化与选择边界。279 收藏 -
Go 1.27 简化了函数文字符号名,并可能合并内联后的同一函数文字。升级后不要再用符号名或函数代码指针判断闭包身份,改用稳定的行为断言和显式测试标识。279 收藏 -
Go 中使用 net/url.ResolveReference 拼接 API 地址时,基础 URL 的尾部斜杠会决定相对路径进入目录还是替换最后一段。本文用代码和边界表说明相对路径、根路径、查询引用与完整 URL 的区别。279 收藏 -
用 Go encoding/xml 的结构体标签把重复 XML 子节点映射到切片,并处理嵌套路径、缺失节点与重复解码残留。279 收藏 -
Go sync.Pool适合复用可丢弃的临时对象,不适合保存配置、连接、租户或权限等长期状态。本文从可丢弃性、Reset清理、所有权和并发边界四个方面给出判断与实现方法。279 收藏 -
对比顺序 Concat、iter.Pull 与预收集三种连接方式,重点说明消费者提前停止时 yield(false) 如何传回数据源并触发资源释放。279 收藏 -
Go net/mail.ParseAddress 将单个邮件地址解析为显示名和邮箱字段。通过原创联系人示例比较手动切分与标准库解析,说明引号逗号、错误处理和格式化文本的区别。279 收藏 -
Golang · Go教程 | 4星期前 | go · 文件读取 · Go archive/zip Reader.RegisterDecompressor 自定义压缩方法 ZIP 解压 Go 文件读取
用 archive/zip.Reader.RegisterDecompressor 为指定 ZIP 压缩方法接入项目解压器,说明方法编号、Reader 级注册、条目读取和 Close 生命周期的边界。279 收藏 -
Go go/format.Node 可以把 ast.File、声明、语句或表达式节点写成 gofmt 风格的 Go 源码。本文从 FileSet 和 parser 开始,说明完整文件与局部节点的差异、注释处理以及 AST 或 Writer 出错时的处理方式。279 收藏 -
Go 的 unicode/utf8.RuneStart 用来判断一个字节是否可能是 UTF-8 符文的首字节。本文从 ASCII、中文多字节编码和 10xxxxxx 后续字节切入,说明它的判断边界,以及为什么还要配合 DecodeRune 或 Valid。279 收藏 -
Go callgraph.DeleteSyntheticNodes 可以从调用图中移除不对应源语法的合成函数节点,并重建剩余节点之间的可达关系。本文说明它的调用时机、root 与包初始化函数的保留边界,以及不可达节点为何需要另行处理。279 收藏 -
Go compress/flate 的 Writer.Reset 可以在保留压缩级别和字典配置的前提下切换新的输出目标,适合批量处理多个独立数据块。本文说明 Close、Reset、错误处理和并发所有权的正确顺序。279 收藏 -
Go 通过 reflect.Value 反射写入整数时,不能只看输入是不是 int64,还要判断目标 Value 的 Kind 和可表示范围。本文说明 OverflowInt 的判断对象、整数边界、错误 Kind 处理和写入前检查方式。279 收藏 -
Go net.Resolver.LookupCNAME 返回跟随零个或多个 CNAME 后的最终规范主机名。本文说明如何用带超时的 Resolver 查询、区分名称变化与解析失败,并解释没有 CNAME 但有地址时为什么仍可能成功。279 收藏