Go教程技术文章
-
sync.OnceFunc 的 panic 不是一次性失败后自动重试,而是被缓存并在后续调用中用同一个值再次 panic。本文拆解实现状态、栈信息差异和可重试初始化的替代写法。249 收藏 -
bytes.Reader 读到 EOF 后不会自动回到开头。本文用 Seek 重置读取游标,并比较 Seek、ReadAt、Reset 的参数语义、错误边界和适用场景。249 收藏 -
Go os/exec 启动命令后,相对路径默认跟随子进程工作目录。本文用 Cmd.Dir 设置独立目录,并区分目录不存在、命令失败和结果文件落点错误等常见问题。249 收藏 -
用 maps.EqualFunc 比较不同值类型的 Go map,讲清键类型约束、eq 回调、string 与 []byte 转换、缺键和性能边界。249 收藏 -
Go CookieJar 在本地 HTTP 测试中不发送 Secure Cookie,通常是 http scheme 不满足 Secure 属性。本文拆开保存、筛选与客户端注入职责,说明 HTTPS 测试和普通 HTTP 单测的选择边界。249 收藏 -
Golang · Go教程 | 3星期前 | 错误处理 · Go教程 · database/sql · Go commit 事务 rollback database/sql sql.Tx BeginTx
Go database/sql 事务最容易漏掉的是提前返回路径:某个 SQL、业务校验或 context 取消后,如果没有统一 Rollback,事务就可能长期占用连接或留下不完整的控制流。本文用 defer、panic 保护和 BeginTx context 封装一个只在成功出口 Commit 的事务 helper,并用路径指标检查覆盖范围。249 收藏 -
Go strings.Fields 会把连续的 Unicode 空白视为一个分隔边界,丢弃首尾空白并返回非空字段。本文用原创示例说明空输入、制表符、换行和 strings.Split 的选择边界。249 收藏 -
Go 的 golang.org/x/image/font/sfnt 用 Parse 解析 TTF 或 OTF 字节,再通过 Font.Name 和 NameIDFamily、NameIDSubfamily、NameIDFull 读取字体名称。本文说明名称缺失、底层数据生命周期以及 Parse 与 ParseReaderAt 的选择边界。249 收藏 -
Go 的 slices.Values 可以把已有切片适配成 iter.Seq,让代码直接用 range 逐项消费。本文说明它的顺序、空切片、自定义切片类型和底层数据边界,并比较 Values、Clone 与 Collect 的使用选择。249 收藏 -
Go bufio.Reader.Reset 会丢弃已有缓冲、重置读取状态并切换到底层 io.Reader,适合在批量处理多段输入时复用 Reader 对象。本文用字符串和文件场景说明复用方式、资源关闭责任、零值初始化、自身 Reset 以及旧缓冲数据的边界。249 收藏 -
用 Go net/url.URL.JoinPath 处理接口基础地址与资源路径的拼接,说明重复斜杠、绝对路径片段、查询参数和转义边界,给出可测试的请求地址写法。248 收藏 -
Golang · Go教程 | 2个月前 | golang · go · 性能 · pprof · 工程实践 · 性能优化 pprof Go PGO profile-guided optimization go build
Go PGO 的收益首先取决于 profile 是否代表真实生产负载,其次要确认构建确实读取了目标 profile。本文从采集、构建和对比三处检查没有加速的原因,并给出可复查的最小流程。248 收藏 -
Go archive/tar 打包目录时,使用 filepath.Rel 计算相对路径,再覆盖 Header.Name 并统一斜杠,就能控制 tar 内部目录层级,同时区分归档路径与解压目标路径。248 收藏 -
Go多用户HTTP客户端不要共享同一个CookieJar。本文从串线症状出发,演示按用户创建独立cookiejar.Jar和http.Client,并说明并发、认证与生命周期边界。248 收藏 -
本文用一个多生产者、多消费者示例说明如何把固定容量的 Go Channel 作为排队上限:缓冲区满时生产者自然阻塞,并通过方向约束、context 取消、WaitGroup 和单点关闭保证生命周期安全。248 收藏