Go教程技术文章
-
用 go/format.Source 格式化模板生成的 Go 源代码,处理完整文件与代码片段的差异,再在成功后写入文件,并说明固定 gofmt 版本的稳定性边界。109 收藏 -
slices.Insert 批量插入是否复用底层数组,先看插入后的长度是否超过原切片容量,再结合尾部或中间插入位置判断移动成本。本文给出容量判断、别名边界与可复查验证代码。109 收藏 -
Go 的 utf8.DecodeRuneInString 遇到非法 UTF-8 时返回 RuneError 和 size=1,空字符串则返回 size=0。本文用原创示例说明如何按字节推进、区分合法替换字符,并处理分块读取的字符边界。109 收藏 -
Go 1.27 的 database/sql.ConvertAssign 主要面向数据库驱动实现。本文说明如何在 RowsColumnScanner.ScanColumn 中复用 Scan 的类型转换规则,正确传递 ScanContext,并处理 NULL、溢出、Scanner、EOF 和资源关闭边界。109 收藏 -
用 slog.NewLogLogger 把旧 log.Logger 调用桥接到 slog.Handler,说明固定级别、Handler.Enabled 过滤、文本输出和结构化字段的边界。109 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,资源包装对象可以把兜底清理与显式 Close 分开。本文用一个文件描述符包装示例说明 AddCleanup、Cleanup.Stop、KeepAlive 的调用边界,以及为什么它不能替代显式关闭。108 收藏 -
maps.Copy 只负责把源 map 的键值写入目标 map,不会替 nil 目标分配存储。本文解释 nil map 的读写边界、make 初始化方式,以及函数内初始化后如何返回可写 map。108 收藏 -
讲清 Go errors.Join 在资源清理中的用法:如何合并主错误与 Close 错误、批量保留多个清理错误,并用 errors.Is 与 errors.As 做判断。108 收藏 -
讲清 Go gzip.Writer 写入 HTTP 响应时 Write、Flush、ResponseController.Flush 与 Close 的职责边界,给出按消息边界刷新、处理错误和排查代理缓冲的实现方案。108 收藏 -
用 strings.CutPrefix 安全移除 Go 字符串的可选前缀,区分未命中、空结果和空前缀,并给出兼容旧版本的 HasPrefix 加切片写法。108 收藏 -
Go 1.27 为 go doc 增加 package@version 查询形式,可以在不修改当前 go.mod 的情况下读取指定模块版本的包文档。本文说明如何定位到具体符号、选择展示选项,并拆分工具链、路径和代理导致的失败。108 收藏 -
Go fix embedlit 可简化嵌入字段初始化,本文说明语言版本、字段路径和已有嵌入值的输入边界,用源码计数区分可读性收益与性能结论。108 收藏 -
说明如何填写 Gonum optimize.Problem.Grad 并配置 BFGS,对比解析梯度、数值差分与无梯度方法,解释隐藏函数求值、停止状态和性能判断。108 收藏 -
从 PEM 和 DER 的输入边界讲清 Go x509.ParsePKCS8PrivateKey 的 any 返回值,给出 RSA、ECDSA 类型分支、统一函数封装和 PKCS#1/SEC1 格式错误处理方案。108 收藏 -
io/fs 使用统一的斜杠逻辑路径,操作系统文件 API 却需要本地路径。本文用 fs.ValidPath、filepath.Localize 和 filepath.Join 说明如何安全转换,并解释 Clean、FromSlash、ToSlash 的边界。107 收藏