Go教程技术文章
-
用 Go 包装 io.Reader,在不把整文件读入内存的前提下统计上传过程中已经读取的字节数。本文区分 Reader 进度、网络发送和服务端落盘边界,给出并发读取进度、失败重试与未知总大小的处理方式。127 收藏 -
Go 的 bufio.Scanner 默认有 token 缓冲上限。本文用长日志场景说明如何在第一次 Scan 前调用 Buffer,如何检查 Err,以及什么时候应该换用 bufio.Reader。140 收藏 -
Go 读取 CSV 时,字段中的逗号和换行必须放在双引号内,并交给 encoding/csv.Reader 解析。本文说明如何保留完整字段、区分列数错误与 ParseError,以及何时不该使用 LazyQuotes。157 收藏 -
面对超大 JSON 数组,不要先读成 []byte 再 Unmarshal;用 json.Decoder 从 io.Reader 逐项 Decode,并为输入总量和单个元素设置清晰边界。160 收藏 -
Go html/template 复用页头、页脚和基础布局,关键是拆分 layout、partial、page 三类模板,用 embed.FS 配合 template.ParseFS 解析,再通过 block 注入页面正文。193 收藏 -
用 Go 编写长时间运行的命令行任务时,signal.NotifyContext 可以把 Ctrl+C 或 SIGTERM 转成 Context 取消信号;本文演示如何停止新任务、保存最后一个完整检查点,并在下次启动时继续。325 收藏 -
用 go/format.Source 格式化模板生成的 Go 源代码,处理完整文件与代码片段的差异,再在成功后写入文件,并说明固定 gofmt 版本的稳定性边界。109 收藏 -
用 Go 标准库解析源码,遍历 ast.FuncDecl,列出普通函数和方法的名称、参数签名与源码行号,并处理多名参数、无名参数、可变参数等常见 AST 边界。119 收藏 -
用 go generate 把源定义、生成器和重复 Go 代码连接起来,掌握指令格式、生成文件标记、执行检查与失败回滚。136 收藏 -
通过 go mod vendor 生成 vendor 与 vendor/modules.txt,在断网构建机用 GOPROXY=off 和 -mod=vendor 完成 Go 项目的离线构建,并处理 go.mod 与 vendor 不一致问题。258 收藏 -
用 Go 的 go build -ldflags -X 在编译时注入版本号、Git 提交号和构建时间,并说明 buildvcs 元数据的读取边界。358 收藏 -
Go 可以用文件名后缀和 //go:build 条件编译为 Windows、Linux 提供不同实现。本文用一个跨平台文件权限接口说明目录组织、构建标签、文件选择检查和常见坑。438 收藏 -
用 go test 生成 Go 测试覆盖率文件,再用 go tool cover 按函数和语句定位未覆盖代码,并说明多包与集成测试的 covdata 边界。113 收藏 -
Go 单元测试中不要让 http.Client 访问真实网络,可以注入自定义 RoundTripper,返回可控响应并断言请求方法、URL、请求头和错误边界。165 收藏 -
用 testing.M 的 TestMain 管理测试包级初始化和统一清理,再用 t.Cleanup 隔离单个测试资源,避免测试结果被清理逻辑覆盖。398 收藏