Go教程技术文章
-
Go 1.20 引入的 http.ResponseController 把 Flush、Hijack、读写超时和全双工读取统一到一个控制入口。本文用最小示例说明它如何工作、何时返回 ErrNotSupported,以及接管连接后必须承担哪些清理责任。186 收藏 -
用 Go reflect 读取结构体字段标签时,先统一处理指针与结构体类型,再结合 StructField.Tag 的 Get 或 Lookup 读取标签,并正确拆分 json 等逗号选项。186 收藏 -
用 go.work 组织多个本地 Go 模块,说明工作区 replace 的覆盖关系,并给出 GOWORK、go list 与发布前收拢配置的检查方法。186 收藏 -
用一个并发加载配置的例子拆开 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 收藏