Go语言技术文章
-
Go 项目的 CI 不该只在最后跑一次 go test。把触发范围、最小权限、go vet、go test 和 go build 拆成可读阶段,PR 出问题时能更快定位,也不会把不需要的写权限交给工作流。485 收藏 -
用 Go 标准库实现 HTTP 文件上传时,不能只调用 FormFile 就直接落盘。本文通过一个最小项目说明请求体大小限制、multipart 解析、文件关闭、受控命名和上传后检查的实现顺序。466 收藏 -
Golang · Go教程 | 1天前 | 切片 · Slices · Go教程 · Go 1.21 · 切片删除 Go教程 Go slices.Delete slices.DeleteFunc Go 1.21
Go 标准库 slices.Delete 会返回修改后的切片。本文用一个最小实验说明为什么必须接收返回值、底层数组何时仍被复用,以及批量删除时怎样避免循环删元素。463 收藏 -
Golang · Go教程 | 1天前 | golang · 配置 · 设计模式 · go · client · api设计 · Go 构造函数 Functional Options 函数选项 Client 配置 API 兼容
Functional Options 适合“少量必填参数稳定、可选项会逐步增加”的 Go Client 构造场景。它能避免频繁改函数签名,并让调用点保留 WithTimeout、WithRetry 这类具名配置;但配置总是成组出现、需要从文件反序列化,或只有一个可选值时,Config 结构体或新增构造函数往往更直接。关键不在模式名称,而在默认值、重复选项与兼容边界是否明确。454 收藏 -
Golang · Go问答 | 7小时前 | time.Parse · 时间处理 · Go问答 · Go基础 · 日期解析 · Go 日期解析 time.Parse YYYY-MM-DD 2006-01-02
Go 的 time.Parse 不认识 YYYY-MM-DD 这类常见日期格式符,它用 2006-01-02 这组参考时刻来描述布局。文章从解析失败的报错入手,给出最小修复、UTC 与业务时区的边界、ParseError 的定位字段和可回归的日期测试,避免日期字段在接口或报表中悄悄偏移。443 收藏 -
Golang · Go教程 | 1天前 | 错误处理 · Go教程 · errors.Join · errors.Is · Go 1.20 · 错误包装 errors.Is errors.As Go errors.Join 多错误处理 Go 1.20
Go 1.20 的 errors.Join 可以把多条错误合并为一个错误值,同时保留 errors.Is 和 errors.As 的判断能力。本文用批量关闭资源、并行任务汇总等场景说明该怎么用,以及哪些时候不该把错误一股脑拼在一起。431 收藏 -
Golang · Go教程 | 8小时前 | 前端开发 · Go教程 · html/template · 网页模板 · 导航 · Go html/template CurrentPath 导航高亮 template.FuncMap Go网页模板
Go 服务端渲染页面时,导航高亮经常被写成散落在多个页面里的条件判断。文章给出 CurrentPath、NavItem 与 template.FuncMap 的最小组合:路由层传入页面状态,模板负责循环和 class 条件,CSS 只认 is-active,从而让新增菜单和单元测试都更轻松。409 收藏 -
Golang · Go教程 | 1天前 | golang · Timer · 并发编程 · time.After · 性能排查 · time.After go timer Go 1.23 NewTimer Timer.Reset Timer.Stop
Go 1.23 之后,未引用的 Timer 可以被垃圾回收,time.After 不再天然等于内存泄漏。但在高频超时循环里,仍要先区分分配波动、超时语义和取消需求;需要复用或主动取消时,再用 NewTimer、Stop 和 Reset 把边界写清楚。403 收藏 -
Go 服务 CPU 没满但请求排队、延迟升高,可能是共享锁竞争而不是算力不足。本文按运行手册说明如何判断信号、短时开启 mutex profile、定位持锁路径、做低风险修复并验证回归。395 收藏 -
Go 的传统 encoding/json 会把 nil slice 编码为 null,把已初始化的空切片编码为 []。先由接口契约决定返回形状,再在成功响应的边界归一化并用测试锁定,避免前端空列表处理出现分支。392 收藏 -
多模块 Go 仓库本地联调顺利、CI 却找不到依赖,往往不是代码问题,而是工作区边界没有管理好。本文用一套可复用的工作流说明 go.work 的建立、验证、依赖同步和上线门禁。380 收藏 -
Golang · Go教程 | 1天前 | 并发 · 错误处理 · go · Context · 排错 · Go 错误链 context.WithCancelCause context.Cause 取消原因
一次请求提前结束时,ctx.Err() 往往只剩下 context.Canceled。用 context.WithCancelCause 和 context.Cause 可以保留真正的中断原因,并把它用于日志、指标和调用方处理;关键是区分父子 Context 的先后关系。366 收藏 -
浏览器会在请求中带上 Sec-Fetch-Site 等 Fetch Metadata。用一层 Go 中间件先区分 same-origin、cross-site 和缺失请求头,再与 CSRF、Origin 校验配合,可以为敏感接口补上一道跨站访问边界。349 收藏 -
Go 1.26 将此前实验性的 Green Tea 垃圾回收器设为默认。升级后不能只看单次压测数字,本文从适用场景、指标基线、最小验证和临时回退开关整理一套可落地的检查方法。334 收藏 -
Golang · Go教程 | 4天前 | 并发 · 标准库 · 命令行 · Go教程 · SHA-256 · 文件校验 · 命令行工具 SHA-256 文件校验 worker pool Go教程 目录扫描
发布包、离线资料或备份文件交付前,手工比对文件很容易漏。本文用 Go 标准库做一个并发 SHA-256 清单工具:扫描目录、限制并发、稳定输出,再用同一份清单复查文件是否被改动。328 收藏