Go教程技术文章
-
用 Go http.MaxBytesReader 限制请求体,识别 *http.MaxBytesError,并在响应头提交前稳定返回 413,区分超限、EOF 和其他读取错误。163 收藏 -
Go 的 cmp.Equal 默认按切片下标比较,元素相同但顺序不同仍会判不等。本文用 cmpopts.SortSlices 为基本类型和结构体切片提供确定性排序规则,并说明重复元素、nil 与空切片的边界。162 收藏 -
Go maps.Copy 会把来源 map 的键值写入目标 map,同名键由来源覆盖。本文围绕默认配置、文件配置和环境覆盖说明调用顺序、nil 目标与嵌套 map 的浅层边界。162 收藏 -
WithCancelCause 可以让调用链继续用 ctx.Err() 判断取消类别,同时通过 context.Cause(ctx) 保留超载、用户主动停止等业务原因。本文给出迁移写法和父子 Context 的边界清单。160 收藏 -
Go 1.24 的 os.Root 会在目录边界内解析符号链接,本文区分 Root 的访问校验与 Root.Symlink 的创建语义,说明根内链接、越界目标、绝对链接和资源释放的处理方式。160 收藏 -
使用 Go embed.FS 暴露静态资源时,先固定嵌入目录,再用 fs.Sub 把对外资源根缩小到指定子目录,最后接入 http.FileServer。本文结合路径规则、错误处理和缓存边界给出一套不容易混淆的写法。160 收藏 -
Go tview 中,后台 goroutine 不要直接修改界面 primitive。把变更放进 Application.QueueUpdate 或 QueueUpdateDraw:前者只保证串行执行,后者执行后立即重绘;事件处理器内部则直接修改并交给主循环绘制。159 收藏 -
go-toml/v2 默认会忽略目标结构体没有的配置键。本文用 Decoder.DisallowUnknownFields 拒绝未声明字段,并说明 StrictMissingError、嵌套结构体与 map 的边界。158 收藏 -
用一个可复用的泛型小工具说明 Go 如何通过类型集合限制底层类型,并区分精确类型、近似底层类型、方法约束与 comparable 的使用边界。158 收藏 -
Windows 下 filepath.Rel 遇到 C: 和 D: 这样的不同盘符时不能构造相对路径。本文解释 VolumeName 与 Rel 的边界,给出同盘计算、跨盘兜底和测试约定,避免把错误吞掉。157 收藏 -
Go URL.ResolveReference 的基础路径末尾斜杠会改变相对路径合并位置。通过目录前缀对照和四条表驱动用例,区分目录基址、当前页面、根路径与查询引用,避免错误拼接。157 收藏 -
用tea.Batch并发启动互不依赖的命令,将耗时操作放入Cmd闭包,并用独立消息更新模型状态。示例讲清结果无序、完成标记与后续任务依赖的处理方式。157 收藏 -
Go HTTP客户端分层超时需要区分网络环节上限、请求业务预算与客户端总超时。本文通过原创小响应示例说明配置方法、正文读取和资源关闭,并解释超时并存与常见误用。157 收藏 -
Go http.Request.Pattern 保存的是 ServeMux 实际匹配的路由模式。本文用 GET /orders/{id} 示例说明怎样读取 Pattern、怎样用 PathValue 取得变量值,以及直接调用 handler 和客户端请求导致空字符串的边界。156 收藏 -
Go 的 archive/tar 适合流式读取归档。本文区分 Header 与 payload,演示只保留文件头元数据、用固定缓冲区消费内容,并说明超大条目和异常归档的内存控制边界。155 收藏