Go教程技术文章
-
Go slog.WithGroup 可以把同一请求的字段放进稳定的 JSON 层级,但嵌套组、空组和同名字段处理不清楚时,日志检索仍会混乱。本文用一段可运行示例说明组名、字段覆盖、空组省略和 JSON 验收方法。167 收藏 -
用 Go embed.FS 嵌入模板时,直接把整个目录交给模板引擎容易扩大读取范围。本文从目录挂载、路径清理和上线验收三个环节,给出可复查的安全写法。161 收藏 -
Go 的一次性初始化函数适合把昂贵加载包装成只执行一次的调用,但也会把第一次返回的错误一起缓存。本文用配置加载示例说明并发安全、失败重试和可测试边界。160 收藏 -
Go 1.21 引入的 maps.Clone 可以复制映射,但它只复制键和值本身,不会递归复制切片、指针等引用值;本文用可运行示例拆开浅拷贝、nil、空 map 和并发边界。158 收藏 -
Go 标准库的一次性双返回值初始化模式,适合把值和错误一起缓存,并让并发调用者共享同一份结果。本文从配置加载与文件读取场景出发,说明它的执行次数、错误传播、panic 行为和不适用边界。156 收藏 -
Golang · Go教程 | 2星期前 | Cookie · Go教程 · net/http · HTTP安全 · HttpOnly Secure SameSite Go教程 Go Cookie安全
Go 服务写 Cookie 时,HttpOnly、SameSite 和 Secure 不是勾选项,而是分别对应脚本读取、跨站发送和传输加密边界。本文用 net/http 的最小写法说明属性组合、反向代理信任条件和可复查的安全检查。152 收藏 -
用一个可复现的超时清理场景,说明 context.AfterFunc 的回调时机、Stop 返回值和幂等清理边界,给出可运行的 Go 示例与并发回归检查。151 收藏 -
Golang · Go教程 | 2小时前 | 标准库 · 命令行 · go · 工程实践 · 参数解析 · Go 子命令 flag.FlagSet NewFlagSet ContinueOnError
Go 的 flag.FlagSet 适合把 start、stop、config 等子命令拆成彼此独立的参数集合。本文从参数隔离开始,说明 ContinueOnError、Usage、Parse 和错误码如何组合,并给出可运行的最小命令行程序。150 收藏 -
围绕一个 map 值从创建、写入、读取到删除的完整生命周期,解释 nil map 与空 map 的差异、并发访问为何需要同步,以及如何用最小检查确认修复有效。149 收藏 -
用 Go os.DirFS 暴露静态资源或模板目录时,关键不是把绝对路径换成相对路径,而是确认 io/fs 的 ValidPath 约束、根目录语义和测试边界。本文用一个最小文件服务示例拆开这些判断。148 收藏 -
用 log/slog 给请求日志补 request_id 时,WithAttrs 适合固定上下文,Handler 包装适合动态注入。本文用一段可运行示例说明两者的边界、并发安全和验收方法。147 收藏 -
Golang · Go教程 | 2小时前 | go · web安全 · net/http · CSRF · Go 1.25 · Go csrf Go 1.25 http.CrossOriginProtection 跨源请求
Go 1.25 的 net/http 新增 CrossOriginProtection,本文从浏览器请求边界、Handler 接入、可信来源配置和 403 验收入手,拆解它适合解决什么问题以及哪些请求不能误放行。143 收藏 -
Golang · Go教程 | 2星期前 | HTTP · go · 浏览器 · 前端数据上报 · Go Beacon API navigator.sendBeacon 页面关闭上报 Go HTTP 接收 Beacon keepalive fetch
页面关闭、切换标签页或手机锁屏时,普通 fetch 可能来不及把埋点送到服务端。本文用 Go 接收 navigator.sendBeacon 的 POST 请求,拆开 Content-Type、204 响应、队列大小与 keepalive fetch 兜底边界,给出可验证的处理方式。140 收藏 -
用一个可复现的分片读取场景,说明 os.File.ReadAt 为什么适合并发定位读取,如何用 io.SectionReader 限定区间,以及短读、EOF 和缓冲区复用的验收边界。139 收藏 -
Go 1.21 引入的 clear 内置函数适合批量清空 map,但它并不等于释放底层容量。本文用缓存复用、重新分配和基准测试说明三种清理策略的边界。134 收藏