Go教程技术文章
-
Go 1.27 为 database/sql/driver 新增 RowsColumnScanner,使驱动可通过 NextRow 和 ScanColumn 直接处理用户目标地址。本文拆解传统中转层、兼容写法与可靠基准方法。187 收藏 -
Go 1.27 将 macOS 支持门槛提高到 macOS 13 Ventura。本文用构建机、目标平台和 cgo 三层检查,帮助你判断旧 macOS 是否会在升级后卡住。187 收藏 -
Go runtime.GC 只能推动一次垃圾回收,不能保证进程 RSS 立刻下降。本文区分对象可达性、运行时堆页和操作系统内存,给出 MemStats、pprof、FreeOSMemory 与 GOMEMLIMIT 的使用边界。187 收藏 -
Go slog 想让 API logger 和后台任务 logger 使用不同最低级别,应分别创建 handler 和 HandlerOptions;固定阈值传 slog.Level,运行时调整使用各自的 slog.LevelVar。187 收藏 -
Go maps.Keys 返回的是键迭代器,不保证每次调用顺序一致。无序诊断可以直接遍历;日志、快照、接口文本和测试若要求稳定结果,应使用 slices.Sorted 或业务比较器显式建立顺序。187 收藏 -
用 Go 的 fs.Sub 把 embed.FS 中的 web 子目录变成独立根目录,示范模板和 HTTP 文件服务接入方式,并说明路径、错误处理、符号链接与测试边界。187 收藏 -
Go 的 fs.ValidPath 校验的是 io/fs 虚拟文件系统名称:必须是 UTF-8、非根式、以正斜杠分隔,不能含空段、点段或父目录段,只有“.”可表示根目录。本文说明它与 filepath、go:embed 模式的区别,并给出安全拼接和测试写法。187 收藏 -
通过一个可运行的 Go 内存索引示例,讲清 RWMutex 的读写边界、不可变条目约定、写前准备、读快照、整表替换,以及竞态检测和基准测试方法。187 收藏 -
Go 的 runtime/secret 是实验性能力,适合把短生命周期令牌处理限制在 secret.Do 内;本文说明构建开关、堆与栈擦除边界、返回值设计及平台限制。187 收藏 -
同一个 gob.Decoder 可以连续读取一条流里的多个值,只有下一次 Decode 返回 io.EOF 才表示正常读完。本文从一次成功误判结束的故障现场出发,说明编码、循环读取、错误分层和截断流处理。187 收藏 -
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 1.27 允许结构体复合字面量直接使用提升字段名。本文用可迁移的 Go 示例说明新旧写法、字段选择规则,以及指针嵌入和字段重叠等编译边界。186 收藏 -
Go 的 embed.FS 会保留嵌入目录的路径层级。本文用 io/fs.Sub 裁剪资源根目录,再通过 http.FS 和 http.FileServer 提供静态文件服务,并说明 URL 前缀、错误处理与发布边界。186 收藏