Go教程技术文章
-
io/fs 使用统一的斜杠逻辑路径,操作系统文件 API 却需要本地路径。本文用 fs.ValidPath、filepath.Localize 和 filepath.Join 说明如何安全转换,并解释 Clean、FromSlash、ToSlash 的边界。107 收藏 -
讲清 Go base64.NewEncoder 的尾部缓冲、Close 刷新和 Writer 错误传递,给出基于 io.Copy 的流式编码写法。107 收藏 -
Go os.Rename 在 Unix 与 Windows 下对打开文件的处理不同。本文用同目录临时文件、句柄关闭、进程内读写锁和有限重试,设计不删除旧文件的跨平台替换方案。107 收藏 -
Golang · Go教程 | 2星期前 | 文件处理 · 错误处理 · Go教程 · FieldsPerRecord ParseError Go encoding/csv CSV注释行 csv.Reader.Comment
Go encoding/csv 的 Reader.Comment 可以忽略行首直接出现注释字符的整行内容,再配合逐条 Read、FieldsPerRecord 和 ParseError 处理,把注释行、空行、有效记录与格式异常分开。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 flag.VisitAll 会按参数名字典序遍历全部参数,这个确定性顺序不等于用户帮助的阅读顺序。本文解释 VisitAll、Visit 的边界,并给出收集参数后按显式规则生成稳定帮助文档的方法。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教程 | 2星期前 | 性能优化 · Go教程 · go strings.Builder Go Builder Grow Go 字符串预留容量 Go Builder 扩容 Go UTF-8 字节长度
Go strings.Builder Grow 预留容量后仍扩容,通常是把追加字节预算误当成最终总容量,或漏算 UTF-8 字节、分隔符和后续写入。本文用 Len、Cap 和实际字节长度拆解原因,并给出可复用的检查方法。104 收藏 -
Go标准库flag可通过自定义Value累积同名参数。本文实现顺序保留的字符串切片类型,说明Set调用、零值String、FlagSet错误处理与参数终止边界。104 收藏