Go教程技术文章
-
Go 测试遇到环境、资源或输入条件不满足时,可以用 testing.T.Skip 或 Skipf 标记为跳过并保留原因。本文说明如何划分 Skip、Fail 与 Fatal 的边界,并给出条件测试、子测试和模糊测试的写法。217 收藏 -
表驱动测试加上 t.Parallel 后,真正需要解决的是每个子测试的数据边界。本文从 t.Run、循环变量、局部副本和 Cleanup 的生命周期说明如何避免并行子测试互相污染。214 收藏 -
Go database/sql Tx 在 BeginTx 成功后注册 defer 回滚兜底,用提交成功标记明确收尾权,并保留业务、提交与清理错误。附原创封装示例与取消、panic 和提交失败的边界说明。330 收藏 -
Go 的 database/sql 使用 QueryRow 查询单行时,真正的错误要到 Scan 才返回。本文说明如何用 errors.Is 判断 sql.ErrNoRows,并区分空结果、字段 NULL、查询失败和多行结果等边界。386 收藏 -
外部毫秒参数不要直接乘 time.Millisecond。本文用 Go 标准库写一个带格式、符号和上限检查的转换函数,处理精度、溢出与边界值。453 收藏 -
用 Go database/sql 批量写入时,把每个批次放进独立事务,批内复用预编译语句,遇到错误及时回滚并释放资源,同时说明批次大小和提交失败的处理边界。242 收藏 -
Go time.Ticker 停止后循环仍不退出,关键在于 Stop 不关闭 C。用 context 取消、defer Stop 和完成通道划分职责,并说明 Go 1.23 回收语义及回调阻塞边界。493 收藏 -
用 Go time.LoadLocation 加载 IANA 时区,再通过 ParseInLocation 正确解释不带时区的日期字符串,并说明 Parse 的 UTC 默认值、数字偏移、时区缩写和夏令时边界。433 收藏 -
Go http.Request.Clone 会为请求副本隔离 Header 映射,但 Body 仍是浅拷贝。本文用最小示例讲清 Clone、WithContext 和 Header.Clone 的边界与推荐写法。178 收藏 -
固定正则表达式不要在每次请求中重复编译:本文用 Go regexp 说明初始化复用、并发读取、动态表达式缓存和错误边界。411 收藏 -
用 Go strings.LastIndexByte 定位最后一个 ASCII 路径分隔符,拆出父路径和末段,处理未找到、根路径、末尾分隔符、UTF-8 字节偏移和多种分隔符的 API 选择。347 收藏 -
用 bufio.Reader 按换行分块读取大文件,解释 ReadString、ReadBytes、ReadLine 的边界,处理跨缓冲区换行、末尾无换行和超长行。104 收藏 -
用 fs.ValidPath 校验虚拟路径,再通过 path.Join 把调用方名称映射到带前缀的底层 FS,并说明 fs.Sub、错误路径和安全边界的取舍。269 收藏 -
Go embed 只能从编译时声明的路径读取资源。本文用 embed.FS 配合 fs.Sub 组织多级静态目录,并说明路径前缀、目录遍历和 HTTP 暴露时的常见误区。302 收藏 -
用 Go 的 filepath.WalkDir 递归遍历目录时,如何只收集指定后缀的文件?本文比较 WalkDir、ReadDir 和 Glob 的边界,并给出大小写统一、目录继续遍历和错误处理的实用写法。255 收藏