-
go-vcard 的 VERSION 只是卡片版本标记,不能代表完整迁移。本文结合 ToV4 的实现说明 Card、字段参数和 Encoder 的关系,解释 TYPE=pref 为什么要转换为 PREF=1,并给出解析、转换、编码的 Go 写法与边界清单。
-
Go 的 go/format.Node 可以把 AST 节点按 canonical gofmt 风格写入 io.Writer。本文从 parser.ParseFile 开始,说明 FileSet、节点范围、错误处理,以及 Node 与 Source 的取舍。
-
Go 1.22 以后,ServeMux 会在注册互相冲突的方法模式时直接 panic。本文用最小复现说明冲突判定规则,并给出统一通配符、拆分 HTTP 方法和处理版本迁移的修复方式。
-
Go go list -test -json 展示测试构建相关包信息,配合 -deps 可展开依赖包对象。说明 ImportPath、ForTest、DepOnly、测试导入字段及连续 JSON 解码的使用方式。
-
Go 1.23 提供的 slices.Chunk 可以把切片按固定大小变成批次迭代器。本文从一个可中止的批处理场景出发,说明空输入、最后一批不足 n 个元素、n<=0 以及子切片容量边界。
-
说明 Go encoding/json.Decoder 没有公开的单次嵌套深度参数,拆开字节上限、业务深度扫描和标准库固定内部保护,给出受控读取与失败处理的完整写法。
-
Go事务遗漏Rollback可能持续占用连接。通过库存预留示例覆盖业务提前返回,说明延迟回滚、提交结果、上下文取消和连接池等待的判断。
-
在 Go 的 MarshalJSON 中复用默认结构体编码时,使用不带方法的新定义类型切断递归;本文给出安全写法、扩展字段方式,以及真别名和指针接收者的边界。
-
用最小字段写入示例讲清 Go reflect 的 Kind、CanSet 与 nil 接口,区分无效 Value、nil 指针和可写字段,并给出字符串及 *string 的安全处理方式。
-
重复压缩短消息时,每次调用 flate.NewWriter 都会重新建立编解码器。本文围绕 Writer.Reset、Close、Flush 和 Reader 的 Resetter 接口,说明怎样复用编解码器、切换输出目标,并处理池化对象的生命周期与异常大缓冲。
-
Go 写文件后读不到最新内容,应先区分用户态缓冲与文件同步。本文说明 bufio.Writer.Flush、os.File.Sync 和 Close 的职责,用独立临时文件演示错误处理,并解释读取游标、旧读取缓冲与持久化目标的差别。
-
Go 的 exec.Cmd.Wait 不只等待子进程退出,还会等待标准输入输出相关的复制协程。若后代进程继承 stdout 或 stderr 的写端,父进程退出后仍可能等不到 EOF。本文说明如何排查 StdoutPipe 读取顺序,使用 WaitDelay 设定收口上限,并区分 ErrWaitDelay、ExitError 与上下文取消。
-
Go 查询参数中的裸加号会按空格处理,字面加号应编码为 %2B。本文区分查询与路径规则,给出 Values 编码示例,并解释重复解码、格式错误和签名地址的处理边界。
-
Go 的 archive/zip 会把 ZIP 条目的外部属性保存在 FileHeader.ExternalAttrs 中,但这个 uint32 的含义取决于 CreatorVersion。本文用读取示例说明如何保存原始字段、调用 Mode() 转为 fs.FileMode,并处理平台、目录和符号链接边界。
-
time.Time.MarshalText 会把零值时间编码成合法的 RFC 3339 文本,而不会自动变成空字符串或被省略。本文说明如何用 IsZero 判断零值,区分文本接口与 JSON 字段策略,并选择值类型、指针或包装类型。