Go教程技术文章
-
用 Go channel、固定数量 worker 和 WaitGroup 搭建有界并发工作池,厘清任务投递、队列容量、关闭责任与结果收口,避免无限创建 goroutine 和 send on closed channel。123 收藏 -
filepath.Clean 只做词法清洗,不能单独保护固定根目录。本文用 Go 标准库示例说明如何组合 filepath.IsLocal、fs.ValidPath、filepath.Localize 和 filepath.Join,处理用户路径与跨平台文件名。123 收藏 -
Go database/sql 事务中,业务语句失败、Rollback 失败和 Commit 失败对应不同的处理边界。本文用一段可复用代码说明如何保留原始错误、避免重复回滚,并解释提交失败后为什么要先按幂等键核对状态。123 收藏 -
Go 1.23 为 math/rand/v2.ChaCha8 增加了 Read 方法,适合从独立的确定性随机源批量取字节。本文从 NewChaCha8、Read、Uint64 交错调用和 Seed 重置入手,排查为什么同一道测试会出现不同字节序列,并给出并发隔离的写法。122 收藏 -
批量导出或生成大文件时,不要先拼成一个巨型字节切片。本文用 io.Copy、os.CreateTemp 和 os.Rename 组成流式落盘链路,说明内存边界、失败清理和原子替换如何配合。122 收藏 -
Go 计算大文件 SHA256 时,不必把整个文件读入内存。本文用 sha256.New 配合 io.Copy 流式写入哈希状态,再说明错误边界、CopyBuffer、摘要格式和文件完整性校验的常见坑。121 收藏 -
用 Go regexp.Regexp.FindReaderIndex 在 io.RuneReader 上定位流式文本匹配,解释返回值为何是字节区间、UTF-8 字符如何换算,以及为什么方法可能继续向后读取。120 收藏 -
Golang · Go教程 | 1星期前 | 文件操作 · Go教程 · 文本处理 · io.MultiReader · Go io.Copy io.MultiReader 文本文件合并 os.Open
Go 合并多个文本文件时,直接把明确顺序的 os.File 交给 io.MultiReader,再用 io.Copy 流式写入输出文件。本文说明分隔符、文件句柄关闭、中途错误和不完整输出的处理方式。120 收藏 -
Go 服务突然报 too many open files 时,先用 /proc/fd 和 lsof 判断文件描述符消耗,再检查 HTTP 响应体关闭、连接复用和 ulimit 配置,最后用指标与回滚手段确认修复有效。119 收藏 -
Go 的 map range 顺序没有稳定保证,同一张 map 也不能把第一次遍历结果当成下一次的顺序。本文用一个最小示例说明随机化边界,并给出测试、日志和接口输出需要排序时的可靠写法。119 收藏 -
用 Go 标准库解析源码,遍历 ast.FuncDecl,列出普通函数和方法的名称、参数签名与源码行号,并处理多名参数、无名参数、可变参数等常见 AST 边界。119 收藏 -
Go math/rand/v2 的顶层函数虽可并发调用,但任务需要独立状态时应为每个任务创建自己的 Rand。本文用 NewPCG、稳定种子和复现检查拆开并发安全、独立性与密码学安全边界。119 收藏 -
Go embed.FS 可以把模板目录嵌入二进制,再用 fs.Glob 按模式批量收集并交给 template.ParseFS。本文说明单层匹配、无匹配、非法模式和多层目录的处理边界。119 收藏 -
Go 的 encoding/csv 遇到列数不齐时,把 FieldsPerRecord 设为 -1 允许可变列数,再在业务层校验必需字段;0 和正数分别适合自动固定与强制固定的 CSV。118 收藏 -
Go 1.24 起可通过 net/http.Server.Protocols 明确设定 HTTP/1、HTTP/2 与明文 HTTP/2 的接受范围。本文给出 TLS 服务的最小配置、默认行为边界和回归检查方法。117 收藏