Go教程技术文章
-
Go slices.IsSortedFunc 接收自定义比较器,判断结构体切片是否按照指定的升序规则排列。本文用分数和名称的复合排序说明比较器约定,并梳理相等项、空切片、逆序项以及与旧 sort API 的边界。460 收藏 -
从一个需要同时排序整数、字符串和业务结构体的场景出发,拆解 Go 泛型约束、比较器和类型集合的组合方式,给出可编译的最小实现、边界判断与测试方法。459 收藏 -
用 encoding/binary 按协议选择 BigEndian 或 LittleEndian,正确读写固定宽度整数,区分结构体布局、切片边界和 Uvarint 变长编码。459 收藏 -
Go 的 bufio.Reader.Peek 只查看缓冲区中的下一个字节窗口,不会推进读取游标,所以后续 Read 仍可能读到同样内容。本文解释缓冲区填充、消费位置、切片有效期,以及 Read、Discard 和 Peek 的正确配合。459 收藏 -
Go errors.Join适合把多个清理或批处理失败原因合并为一个error返回,同时保留errors.Is和errors.As的可判定链。本文用资源关闭场景说明nil处理、错误遍历、上下文包装和兼容边界。459 收藏 -
Go 的 time.Time.AppendFormat 会把格式化结果直接追加到已有 []byte 并返回扩展后的切片。本文用日志字段示例说明返回值、容量复用、Format 对比以及布局和时区的使用边界。459 收藏 -
用 go tool trace -d=parsed 把 Go 执行追踪文件转换为解析事件文本,掌握输入准备、输出保存、调试模式区别与失败边界。459 收藏 -
读取数十万文件的目录时,os.ReadDir 的排序语义和一次性返回 []os.DirEntry 会同时影响内存与响应时间。本文从目录扫描小工具出发,比较 ReadDir 与 File.ReadDir 的边界,并给出保留排序、改为分批遍历和验收内存的实现方法。458 收藏 -
Golang · Go教程 | 2个月前 | sync · WaitGroup · 并发编程 · Go教程 · 工程实践 · Go 并发任务 错误传播 sync.WaitGroup.Go WaitGroup.Add
Go 1.25 新增的 sync.WaitGroup.Go 能把启动任务、计数和收尾绑定在一起,但它不负责错误返回,也不能让任务函数 panic。本文从 Add 竞态与错误传播两个现场,给出可核对的写法和验收边界。458 收藏 -
Go http.Client 默认会跟随重定向。本文用 CheckRedirect 和 http.ErrUseLastResponse 保留原始 3xx 响应,说明 Location、请求头、响应体及普通错误返回的边界。458 收藏 -
Golang · Go教程 | 1个月前 | 事务 · go · database/sql · Go database/sql readonly TxOptions driver.ConnBeginTx
Go 的 sql.TxOptions.ReadOnly 通过 DB.BeginTx 传给 driver.ConnBeginTx,是否真正形成只读事务取决于驱动实现。本文拆解传递路径、错误边界和连接池收尾方式。458 收藏 -
在 CI 中使用 go fix -diff 可以只输出统一差异而不改写源文件:无建议时退出 0,有待应用差异时退出非零。本文给出最小门禁脚本、保留补丁时的 pipefail 写法、包范围拆分方案和故障判定清单。458 收藏 -
url.ParseQuery 返回错误时,Values 仍然包含已经成功解码的合法参数。本文用一个混合合法与非法编码的查询串,说明如何识别部分成功、如何在保留参数和拒绝请求之间做出明确选择。458 收藏 -
Golang · Go教程 | 2星期前 | 错误处理 · 数据库 · 事务处理 · 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 收藏