Go语言技术文章
-
Go text/template 遇到 map 缺字段时,可用 missingkey=default、zero 或 error 控制继续输出、返回零值或立即报错;本文说明三种规则的边界和 Execute 错误处理方式。301 收藏 -
Go test -shuffle=on 能随机化测试和基准的执行顺序,并报告可复现的种子。本文用一个共享 map 的例子说明如何暴露顺序依赖、固定种子重放失败,以及用清理和独立夹具修复测试隔离问题。161 收藏 -
Go text/template 的自定义函数要先放进 template.FuncMap,再通过 Funcs 绑定并 Parse 模板。本文说明注册时机、函数签名、管道调用、错误处理,以及解析后替换同名函数的边界。319 收藏 -
解析 go test -json 时,关键不是逐行打印 JSON,而是按 Package 和 Test 保存事件流,再依据 Action 还原测试状态与输出。本文给出字段边界、并行处理和常见坑。411 收藏 -
Go multipart boundary 缺失时,先检查 Content-Type 参数,再区分请求头、请求体和字段层问题;本文给出客户端发送与服务端诊断的可靠写法。125 收藏 -
go test 在包列表模式下会复用成功的测试结果,看到 (cached) 时不一定代表测试二进制被重新运行。本文说明 go test -count=1 的适用场景、GODEBUG=gocachetest=1 的排查方法,以及测试缓存和构建缓存的区别。128 收藏 -
Go 处理 multipart.FileHeader 时,FileHeader 只描述上传文件,真正需要关闭的是 Open 返回的 multipart.File;如果 ParseMultipartForm 把文件落到磁盘,还要在表单生命周期结束时调用 RemoveAll 清理临时文件。303 收藏 -
Go 的 go、toolchain 指令和 GOTOOLCHAIN 并不是同一层配置:本文用实际选择场景拆开最低版本、建议版本、PATH 查找和自动下载的边界,帮助你稳定配置本地与 CI 工具链。225 收藏 -
使用 Go 标准库 multipart.Writer 同时写入普通字段和文件字段,正确关闭 Writer、绑定带 boundary 的 Content-Type,并从资源、输入与审计角度排查上传请求问题。200 收藏 -
go.work 的 use 不是递归目录扫描器。本文用 GOWORK、go list 和嵌套模块示例,说明本地 workspace 如何影响依赖解析,以及 CI 如何避免误用本地模块。108 收藏 -
Go net/http 重定向会复制普通请求头,但 Authorization、Cookie 等敏感头有安全边界。本文用 CheckRedirect、主机白名单和 Cookie Jar 说明如何保留必要 Header。351 收藏 -
Go 项目有 vendor 目录并不代表所有命令都会自动使用它。本文按 go.mod 的 go 版本、vendor/modules.txt、-mod 参数和 GOFLAGS 拆解判断条件,并给出 CI 中排查依赖来源的检查清单。369 收藏 -
Go 1.22 扩展了 net/http ServeMux 的方法和通配符模式。本文用一张资源路由表说明如何组合 GET、POST、DELETE,判断模式覆盖关系,避免注册期冲突,并处理 PathValue、尾斜杠和旧版本兼容边界。460 收藏 -
Go 的 exclude 和 retract 都能避开问题版本,但作用域完全不同:exclude 是消费方修正自己的模块图,retract 是模块作者撤回已发布版本。本文用场景、示例和验证命令说明如何选择。227 收藏 -
Go 的 http.Client 默认不会替你保存登录后的 Cookie。为 Client 注入 net/http/cookiejar 的 Jar,并复用同一个 Client,登录响应里的 Set-Cookie 才能在后续匹配请求中自动带回。298 收藏