Go教程技术文章
-
支付、下单或重试场景里,Go HTTP API 需要区分同一请求的安全重放与参数冲突。本文从调用方体验出发,设计 Idempotency-Key 的语义、存储状态、过期策略和错误响应,并给出可运行的 Go 示例。317 收藏 -
Go container/list 读取链表节点的实用写法:从 Front、Back 开始,用 Next、Prev 遍历,通过 Value 和类型断言取出业务数据,并处理空链表与删除节点边界。317 收藏 -
围绕 Go slices.BinarySearch 讲清升序切片的查找、未命中插入点、重复值与空边界,并用 BinarySearchFunc 处理结构体字段排序。317 收藏 -
Go multipart/form-data 可以在一次请求中同时上传文件和重复字段。本文用 multipart.Writer 构造请求,演示服务端从 Form.Value 与 Form.File 读取切片,并说明 boundary、资源关闭和大小限制。317 收藏 -
以检索结果页说明 Go html/template 的上下文转义、普通模板函数与可信片段,给出固定HTML标记的完整示例,并明确模板源码、富文本和URL的信任边界。317 收藏 -
表格驱动和并行子测试中,把资源创建、t.Cleanup 注册和释放范围放在同一个子测试作用域,可以覆盖失败、跳过与独立运行场景;本文说明父子清理顺序、后注册先执行和共享资源边界。317 收藏 -
Go archive/tar 当前没有公开的 Reader.WriteTo 方法。本文解释源码内部 writeTo 与 Reader.Read 的差异,说明稀疏文件空洞为何会表现为 NUL 字节,并给出普通解包与额外恢复层的边界判断。317 收藏 -
使用 Go x/text/runes.Map 按 Unicode 码点替换指定字符,掌握 transform.String、非法 UTF-8 边界以及 Map、Remove 的选择。317 收藏 -
用 github.com/gofrs/flock 的 TryLock 实现非阻塞进程互斥,区分 locked=false 与错误,安排 Unlock 清理,并用 TryLockContext 设置有限等待边界。317 收藏 -
time.AfterFunc 的 Stop 返回 false 只说明定时器已经过期或停止,并不代表回调已经执行完。本文用 done 通知说明如何安全等待已启动的回调结束。317 收藏 -
Go 的 ast.CommentGroup.Text 面向文档文本,会去掉注释标记、整理空行,并过滤 //line、//go:noinline 等注释指令。本文对比 Comment.Text 与 Text 的职责,说明 ParseComments 的入口和源码工具中的选择方法。317 收藏 -
compress/zlib.NewReader 可能在创建读取器后才暴露校验错误。本文用完整消费数据的示例区分 NewReader 初始化错误、读取错误、截断错误和 zlib.ErrChecksum,并给出安全关闭读取器的写法。317 收藏 -
把多项错误拼成字符串会丢掉可判断的错误链。本文以校验、写盘和关闭资源为例,演示如何迁移到 errors.Join,保留 errors.Is 判断能力,并处理 nil、重复错误与 errors.Unwrap 的边界。316 收藏 -
使用 Go 标准库 archive/zip 将多个服务端文件逐个写入 ZIP,并通过 HTTP 以附件形式下载;文章同时说明条目命名、Close 顺序、临时文件和错误处理。316 收藏 -
regexp.QuoteMeta 只能构造正则字面量,不能替你修正 Go 字符串字面量。处理 Windows 路径时要分清源码、运行时字符串和 RE2 模式三个边界。316 收藏