Go教程技术文章
-
本文用 go.work 连接本地 API 与服务模块,避免 replace 污染 go.mod,并通过 GOWORK=off 测试和分阶段升级保持两个模块独立发布。201 收藏 -
用 Go archive/tar 的 Header.Typeflag 区分目录、普通文件、硬链接和符号链接,配合 Linkname、Size 与 WriteHeader 处理不同条目的数据边界。199 收藏 -
用 Go 1.23 的 iter.Seq2 为树形索引提供键值遍历时,可让 All 返回中序序列,并让递归 walker 把 yield=false 一路向上返回,从而支持 range break、保持封装且避免构造临时切片。199 收藏 -
使用 ast.Inspect 查找节点的关键是先按具体 AST 类型断言,再检查名称等字段条件,并用回调返回值控制子树遍历。本文给出函数调用查找、位置记录与常见陷阱。197 收藏 -
Go bytes.Buffer.ReadFrom 适合把完整 io.Reader 数据接入内存缓冲。本文说明 EOF、ReadFrom 返回值、Grow、io.LimitReader、ErrTooLarge 与 Bytes 切片所有权的边界。194 收藏 -
用 Go constant.ToInt 判断编译期数值能否精确表示为整数,并进一步说明 constant.Int、constant.Unknown、Int64Val 与目标整数类型范围之间的区别。194 收藏 -
Go 的 http.NewResponseController 能统一调用刷新、截止时间、连接接管与全双工能力。本文用场景对比和完整示例讲清选择方法与边界。194 收藏 -
Golang · Go教程 | 2天前 | 标准库 · HTTP · 文件上传 · Go教程 · Go LimitReader MaxBytesReader multipart.Reader ReadForm 表单内存
Go multipart 表单的内存限制要分三层:MaxBytesReader 保护整个请求体,ReadForm(maxMemory)控制解析预算,NextPart 配合 LimitReader 才能给单个文本字段设置精确上限。本文用错误类型和清理动作说明三种边界如何组合。193 收藏 -
Go 1.27 为 go doc 增加 package@version 查询形式。本文说明如何查看指定依赖版本的 API,并区分 go.mod、go list 与文档查询的职责。193 收藏 -
Go 后台任务不应只用一条裸 goroutine 启动。本文实现 Start、Cancel、Wait 三段式生命周期,统一任务所有权、取消原因、退出等待、超时关闭和错误返回,并说明适用边界与测试要点。189 收藏 -
通过一个可运行的 Go 内存索引示例,讲清 RWMutex 的读写边界、不可变条目约定、写前准备、读快照、整表替换,以及竞态检测和基准测试方法。187 收藏 -
用一个窄而清晰的 Go 类型约束统一 int、int64 和 float64 求和,并通过近似类型项支持业务命名类型。文章给出 Sum、SumBy、表驱动测试,以及空切片、溢出和浮点精度的边界说明。182 收藏 -
slog.LogAttrs 直接接收类型化 Attr,可跳过 Log 的交替键值解析和通用参数转换;再配合 Logger.With、Enabled 与基准测试,可以减少热点日志中的重复工作和不必要分配。180 收藏 -
用一个可复用的 zlib.ReadCloser 依次解压多个独立数据块,讲清 Reset、ReadAll、字典、错误处理和 Close 的边界。177 收藏 -
本文设计一个安全的 Go 反射字段赋值 API:从多层指针入口定位可设置结构体,按策略初始化 nil 中间节点,并以严格的类型兼容和稳定错误替代 reflect panic。177 收藏