Go教程技术文章
-
Go os.Rename 在 Unix 与 Windows 下对打开文件的处理不同。本文用同目录临时文件、句柄关闭、进程内读写锁和有限重试,设计不删除旧文件的跨平台替换方案。107 收藏 -
Go 1.26 的 errors.AsType 用泛型简化错误类型提取。本文用 PathError 和 ErrNotFound 讲清返回值、零值、errors.Is 以及旧版本兼容边界。106 收藏 -
Go 1.27 新增 crypto/mldsa 标准库包。本文用最小示例说明 ML-DSA-44 的密钥生成、签名、验签、Context 约束,以及 FIPS 140-3 模块下的可用性边界。106 收藏 -
用 Go 的 math/rand/v2 处理切片随机化:用 Shuffle 原地打乱,用 Perm 生成不重复下标抽样,并说明数量边界、原切片副作用与安全随机数的选择。106 收藏 -
Go database/sql 的 sql.Stmt 可以在重复 SQL 中复用。本文按 DB、事务和局部函数三种边界说明 PrepareContext、StmtContext 与 Close 的正确放置,避开反复 Prepare 和资源迟迟不释放。106 收藏 -
Go 里接口自身为 nil 与接口持有 typed nil 不是一回事,reflect.ValueOf(nil) 还会得到无效 Value。本文给出带 IsValid 和 Kind 防护的安全判断函数,避免反射判断直接 panic。105 收藏 -
Go encoding/csv 的 Comment 只识别没有前导空白的物理行首。引号字段中的 # 属于字段值,不会被当成注释;本文用代码和边界表说明三种情况的区别。105 收藏 -
Go sync.Cond 的关键不是把 Signal 换成 Broadcast,而是让等待条件、互斥锁和唤醒范围保持一致。本文从有界队列场景出发,拆解 Wait 的循环写法、Signal 与 Broadcast 的选择、丢唤醒风险和可验证的测试边界。104 收藏 -
Go 客户端连续调用登录接口和业务接口时,应复用同一个配置了 cookiejar.Jar 的 http.Client。本文说明 Cookie 的域名、路径、协议和过期边界,并给出公共后缀列表、多账号隔离与内存持久化注意事项。104 收藏 -
Golang · Go教程 | 10小时前 | 性能优化 · Go教程 · 内存分配 · 字符串拼接 · strings.Builder · go strings.Builder Go Builder Grow Go 字符串预留容量 Go Builder 扩容 Go UTF-8 字节长度
Go strings.Builder Grow 预留容量后仍扩容,通常是把追加字节预算误当成最终总容量,或漏算 UTF-8 字节、分隔符和后续写入。本文用 Len、Cap 和实际字节长度拆解原因,并给出可复用的检查方法。104 收藏 -
Golang · Go教程 | 2星期前 | 依赖管理 · Go教程 · Go Modules · Go 1.27 · require go.mod 间接依赖 Go 1.27 go mod tidy 直接依赖
Go 1.27 会把 go.mod 中多个 require 块整理成直接依赖和间接依赖两组。本文说明 tidy 的边界、哪些依赖会被标记 indirect,以及升级后如何检查差异。103 收藏 -
Go 1.27 的运行时针对小对象分配做了专项优化。本文围绕官方给出的 80B 阈值,说明它影响的对象范围、适合怎样判断收益,以及为什么不能把版本说明直接当成业务性能承诺。103 收藏 -
用 net.Resolver.LookupHost 配合 context.WithTimeout 给 DNS 查询单独设定预算,并通过 DNSError、Timeout、Temporary 和上下文错误区分重试、取消与域名不存在。103 收藏 -
用 go mod why 按包或模块读取从主模块到目标依赖的最短导入路径,理解 -m、-vendor、未引用提示与 go mod graph 的边界。103 收藏 -
Go database/sql 查询循环结束并不等于读取完整成功,本文从连接中断、Rows.Close 和事务提交三个现场拆开 Rows.Err 的检查边界,并给出可复现的代码与验收方法。102 收藏