Go教程技术文章
-
批量压缩多个独立数据块时,可以复用同一个 gzip.Writer,但必须先 Close 完当前 gzip 流,再调用 Reset 切换输出目标,并在首次写入前重新设置 Header。本文用两个缓冲区说明复用顺序、元数据边界和不适合共享 Writer 的场景。330 收藏 -
Go database/sql Tx 在 BeginTx 成功后注册 defer 回滚兜底,用提交成功标记明确收尾权,并保留业务、提交与清理错误。附原创封装示例与取消、panic 和提交失败的边界说明。330 收藏 -
Go hash/maphash 适合为当前进程内的字符串或字节键计算 uint64 哈希。本文从 Seed 的归属、String 与 Bytes 的选择、复合键规范化和并发边界入手,说明哪些结果可以用于分桶和索引,哪些用途不应依赖。330 收藏 -
Go 的 x/text/number.Percent 适合把 0 到 1 的比例值格式化为带百分号的本地化文本。本文从输入尺度开始,说明 message.Printer、Scale、Precision 和舍入边界怎样配合,并给出可复用的封装。330 收藏 -
Go Hamba Avro 处理演进中的 Avro 记录时,应先用 SchemaCompatibility.Resolve(reader, writer) 生成复合 Schema,再交给 NewDecoderForSchema 解码。本文用新增默认字段、删除旧字段和 int 到 long 类型提升说明完整路径,并补充不可信输入的大小限制与拒绝记录边界。330 收藏 -
用 Go database/sql 调用带 OUT 或 INOUT 参数的存储过程时,掌握 sql.Out、Dest 和 In 的绑定关系,配合 ExecContext 与驱动能力排查,避免输出值无法回写。330 收藏 -
Go 1.23 引入的 unique.Make 可以把可比较值规范化为 Handle。本文从最小写法、map 去重、类型约束和生命周期四个方面说明如何正确复用唯一实例。329 收藏 -
Go 的 os.Chown 接收路径、uid 和 gid,用于修改 Unix 文件或目录的数字所有者信息。本文说明 -1 保留参数、符号链接与 Lchown 的差别、权限错误处理和 Windows/Plan 9 平台边界。329 收藏 -
Go JetStream 发布返回 PubAck 后,Duplicate=true 表示服务端按消息标识识别为重复发布,不等于消费端已经确认。本文用 nats.go 说明 WithMsgID、Stream、Sequence 和错误分支的实际边界。329 收藏 -
Go bufio.Scanner 默认按行切分,空行会作为长度为零的 token 返回;循环结束后要检查 Err 区分正常 EOF、底层读取错误和 token 过长。本文给出空行策略、Buffer 配置和按行读取代码的迁移清单。329 收藏 -
Go fmt.Appendf 可以把格式化结果直接追加到已有 []byte,减少 fmt.Sprintf 先生成字符串再 append 的中间路径。本文从缓冲区复用、容量准备、专用追加函数和基准测试讲清适用边界。329 收藏 -
通过有界环形队列说明sync.Cond广播、循环等待与关闭语义,复用存储和固定工作协程,并讨论分配、背压及业务完成边界。328 收藏 -
用 Go csvutil 编写逐条解码库存 CSV 的统计工具,只保留当前结构体与计数器,说明 EOF、表头、空字段和下游持有方式为何影响真正的流式处理。327 收藏 -
通过NewBuiltin与预声明环境向Starlark脚本注册Go宿主函数,说明参数解析、返回值、错误处理与性能测量口径。327 收藏 -
Go 的 gob 同时遇到 GobEncoder 和 BinaryMarshaler 时,会优先调用 GobEncoder。本文从接口优先级、值与指针方法集、错误处理和持久化版本四个方面说明如何稳定控制编码路径。327 收藏