Go教程技术文章
-
Go database/sql 事务不能简单理解为 Commit 失败后再 Rollback。本文用可复用代码说明提交前错误的回滚写法,以及提交错误后的未知状态、幂等和对账处理。339 收藏 -
用 Go 的 url.JoinPath 组装 API 路径,讲清路径段转义、查询参数、URL 对象转换、清理规则和常见坑。339 收藏 -
Go 里给 TLS 客户端加入自定义根证书时,先保留系统 CertPool,再用 x509.CertPool.Clone 建立隔离副本,避免不同租户或连接配置互相污染。本文说明最小写法、Clone 与直接赋值的边界,以及 RootCAs 的发布检查。339 收藏 -
Go 模糊测试发现失败输入后,不要把 crash artifact 当作临时文件删除。本文以 FuzzParse 为例,说明如何定位 testdata/fuzz 语料、用 -run 精确复现,并让修复后的失败输入长期成为默认回归测试。339 收藏 -
介绍 Go 1.27 自定义连接的 TLS ALPN 状态接口,以连接包装器和完整握手示例说明真实状态转发、HTTP 协议配置及客户端与服务端的适用边界。339 收藏 -
Go Squirrel 使用 PlaceholderFormat 在 Question、Dollar、Colon 和 AtP 之间转换数据库占位符,本文说明统一配置、args 对应、嵌套查询和字面问号的处理边界。339 收藏 -
Go cmp.Or 会按参数顺序返回第一个不等于零值的候选,适合把命令行、环境变量、文件配置和默认值组合成清晰的回退链。本文说明它的配置用法、comparable 约束、解析错误边界与常见误区。339 收藏 -
Go net.ParseIP 会把 IPv4 以 IPv4-mapped IPv6 形式返回。本文说明为什么不能直接按切片长度比较,以及如何用 IP.Equal 做语义判断、用 To4 生成统一的 IPv4 表示,并区分真正 IPv6。339 收藏 -
用 Go strings.Cut 拆分可选配置键值时,关键是同时读取 before、after 和 found:只按第一个等号切开,缺少分隔符时明确返回错误,值中的后续等号保持不变。本文封装一个可复用的小函数,并覆盖空键、空值和多余等号。339 收藏 -
讲清 Go encoding/base64 NewDecoder 的流式读取、正常 EOF、尾部不完整输入与底层 Reader 错误如何区分,并给出可直接改造的判断代码。339 收藏 -
Go 1.27 调整 go tool trace -http 的默认监听行为。本文用一个小型诊断工具说明只写端口、显式写 localhost 和绑定远程地址的差异,并给出升级后可复查的监听边界清单。338 收藏 -
Go 中可以通过 Scanner.Split 注册自定义 SplitFunc,按 || 等多字节分隔符读取记录。关键是未遇到完整分隔符时等待数据、EOF 返回余量,并用 Buffer 处理记录长度上限。338 收藏 -
用 Go 的 image/draw.DrawMask 把源图按 Alpha 蒙版叠加到目标图,掌握坐标对齐、draw.Over 与常见偏移排查方法。338 收藏 -
Go 的 FileMode 同时包含文件类型、普通权限和特殊权限。本文说明如何只替换权限位,正确构造 File.Chmod 入参,并处理 Unix 与 Windows 的语义差异。338 收藏 -
Go text/template 的 block 是“默认内容加可覆盖命名模板”的简写。本文用基础布局与子页面示例说明怎样解析同名定义覆盖默认块,并比较 block、define 与 ExecuteTemplate 的适用边界。338 收藏