Go教程技术文章
-
Go 的 time.Ticker 适合固定节拍触发工作,但当一次任务比 tick 间隔更长时,调度、积压和取消边界很容易混在一起。本文用一个定时刷新任务说明 Stop 与 Reset 的正确位置,并给出带背压、可退出、可观测的写法。185 收藏 -
用一个并发加载配置的例子拆开 Go 一次性多值初始化:为什么结果和错误会一起缓存,如何验证只初始化一次,以及何时应该换成可重试的方案。185 收藏 -
Go 1.24 默认支持泛型类型别名。本文从跨包迁移一个泛型类型的实际场景出发,说明别名与定义类型的语义差异、Go 1.23 实验开关的边界,以及如何用编译、测试和工具链检查完成迁移验收。185 收藏 -
Go 1.27 将 unicode 包及相关支持从 Unicode 15 升到 Unicode 17。本文用 RangeTable、IsLetter、IsDigit 和 UTF-8 校验拆开说明升级后业务字符规则的回归边界。185 收藏 -
围绕 Go http.Transport 说明 IdleConnTimeout、MaxIdleConns 和 MaxIdleConnsPerHost 的作用,区分客户端空闲回收与服务端主动关闭,并给出可复用 Transport 的配置示例和排查清单。185 收藏 -
strings.FieldsFunc 适合按字符规则切分文本,但它会合并连续分隔符并丢弃空字段。本文用配置行解析场景说明它的边界,并给出保留空字段的自定义写法。184 收藏 -
Go 1.27 为 httptest 增加 NewTestServer,默认使用内存网络;testing/synctest 则负责隔离并发测试中的 goroutine 与虚拟时间。本文用一个异步 HTTP Handler 示例说明两者的连接方式、等待边界和不适用场景。184 收藏 -
Go 测试里可以用 testing.T.Setenv 临时设置环境变量,测试和子测试结束后由 Cleanup 恢复原值。本文说明缺失值与空值的区别,以及为什么 Setenv 不能和 t.Parallel 或并行祖先一起使用。184 收藏 -
用可复用的 []byte 缓冲调用 strconv.AppendQuote,连续构造带引号字符串,减少中间字符串和无效扩容,并厘清 Go 字符串字面量与 JSON、URL 编码的边界。184 收藏 -
解释 Go bytes.Reader 中 Len、Size、Read、ReadAt、ReadRune、Seek 和 Reset 的关系,帮助定位读取后长度变化与游标位置不一致的问题。184 收藏 -
围绕 Go modules replace、vendor 与 module 模式,说明如何确认依赖来源、生成 vendor/modules.txt、统一构建参数并保留可回退的迁移清单。184 收藏 -
Go 服务里记录 panic,关键是把 recover 放进 defer 函数,并用 runtime/debug.Stack 保存当前 goroutine 的调用堆栈,再补上请求标识和恢复边界。183 收藏 -
解释 Go maps.Equal 比较配置 Map 时 nil map 与空 map 为什么相等,说明 m == nil、len、可写边界、NaN 特殊值和需要保留 nil 语义时的测试写法。183 收藏 -
Go 1.24 引入 os.OpenRoot 后,如何把用户传入的相对路径限制在指定目录内?本文用一个可运行的文件读取示例,验证正常打开、绝对路径和 .. 目录逃逸三类结果。182 收藏 -
掌握 Go test 的 -run、-count=1 和 -count=N:精确筛选顶层或子测试,排除成功缓存,并重复验证偶发失败。182 收藏