Go教程技术文章
-
Go 1.23 提供的 slices.Chunk 可以把切片按固定大小变成批次迭代器。本文从一个可中止的批处理场景出发,说明空输入、最后一批不足 n 个元素、n<=0 以及子切片容量边界。461 收藏 -
用最小字段写入示例讲清 Go reflect 的 Kind、CanSet 与 nil 接口,区分无效 Value、nil 指针和可写字段,并给出字符串及 *string 的安全处理方式。460 收藏 -
重复压缩短消息时,每次调用 flate.NewWriter 都会重新建立编解码器。本文围绕 Writer.Reset、Close、Flush 和 Reader 的 Resetter 接口,说明怎样复用编解码器、切换输出目标,并处理池化对象的生命周期与异常大缓冲。460 收藏 -
Go 的 archive/zip 会把 ZIP 条目的外部属性保存在 FileHeader.ExternalAttrs 中,但这个 uint32 的含义取决于 CreatorVersion。本文用读取示例说明如何保存原始字段、调用 Mode() 转为 fs.FileMode,并处理平台、目录和符号链接边界。460 收藏 -
Go slices.IsSortedFunc 接收自定义比较器,判断结构体切片是否按照指定的升序规则排列。本文用分数和名称的复合排序说明比较器约定,并梳理相等项、空切片、逆序项以及与旧 sort API 的边界。460 收藏 -
Go HTTP/1 处理器默认会先消费未读请求体,再开始写响应。本文用 ResponseController.EnableFullDuplex 说明如何在同一处理器中按块读取请求并持续写出响应,以及不支持、刷新和错误处理的边界。460 收藏 -
Go 的 net/url.URL 不负责保存解析失败原因,应该保留 url.Parse 返回的 error,并用 errors.As 提取 url.Error 的操作名、原始 URL 与底层错误。460 收藏 -
Go 的 time.Time.AppendFormat 会把格式化结果直接追加到已有 []byte 并返回扩展后的切片。本文用日志字段示例说明返回值、容量复用、Format 对比以及布局和时区的使用边界。459 收藏 -
用 go tool trace -d=parsed 把 Go 执行追踪文件转换为解析事件文本,掌握输入准备、输出保存、调试模式区别与失败边界。459 收藏 -
讲清 Go database/sql.Tx.StmtContext 如何把已有的 DB 级预编译语句绑定到当前事务,并比较 Tx.PrepareContext、ExecContext 的适用场景、上下文边界和关闭时机。459 收藏 -
Go 的 io/fs.ValidPath 没有 nil 参数,所谓空值通常是空字符串。本文梳理空字符串、.、首尾斜杠、. 与 .. 元素、非法 UTF-8 的判断结果,并用小函数把语法错误和文件不存在分开处理。459 收藏 -
解释 Go url.ResolveReference 在空路径、查询串和片段之间的继承条件,通过原创建例区分空引用、显式问号与新路径,并说明保持原始查询和清除片段的业务取舍。459 收藏 -
url.ParseQuery 返回错误时,Values 仍然包含已经成功解码的合法参数。本文用一个混合合法与非法编码的查询串,说明如何识别部分成功、如何在保留参数和拒绝请求之间做出明确选择。458 收藏 -
Golang · Go教程 | 3星期前 | 错误处理 · 数据库 · 事务处理 · Go教程 · 后端开发 · Go commit 事务 rollback database/sql sql.Tx BeginTx
Go database/sql 的事务关键在于把 BeginTx、事务内读写、Rollback 和 Commit 组织成清晰分支。本文用订单与库存场景说明 sql.Tx 的使用边界、提交失败处理、连接占用和落地检查。458 收藏 -
Go context.WithoutCancel 可以保留请求范围内的值,却不继承父上下文的取消信号。本文对比 Value、Done、Deadline、Err 和 Cause,并给出脱离请求后重新设置独立超时的写法。458 收藏