Go语言技术文章
-
用 Go encoding/csv 完成一套可复查的 CSV 入库流程:去掉 UTF-8 BOM,跳过空行,校验列数,规范化字段,并用唯一键和事务处理重复记录。408 收藏 -
Go 在 range 遍历 map 时允许删除尚未访问的键,但遍历顺序本来就不稳定,新增元素也不能依赖是否会被访问。本文用小实验区分语言保证、实现现象和可测试的安全写法。384 收藏 -
Go 1.24 正式支持泛型类型别名,适合把旧包里的泛型类型平滑迁到新包。本文从包重构场景出发,说明别名与新类型的差异、旧代码影响、迁移步骤和最小验证方法。400 收藏 -
Golang · Go问答 | 1星期前 | 中间件 · go · 认证 · 安全 · net/http · net/http 认证中间件 Go问答 BasicAuth WWW-Authenticate
Go 的 BasicAuth 适合内部管理端、健康检查或临时保护,但 Request.BasicAuth 只负责解析,不替你决定空密码、认证失败状态码和日志内容。本文从一个标准库中间件出发,补齐 401、WWW-Authenticate、凭据校验、权限边界和测试核对。451 收藏 -
Go 1.26 重写了 go fix,可以自动应用一批现代化改写。本文从 new(expr) 这个最小例子出发,说明 go.mod 版本门槛、变更预览、测试核对和回滚边界,帮助旧项目安全尝试 go fix。388 收藏 -
Go 扫描上传目录或日志目录时,os.ReadDir、File.Readdir 和 filepath.WalkDir 的内存与排序行为并不一样。本文用一个目录索引小实验说明如何按需读取 DirEntry、避免无意排序,并在权限错误和部分结果场景下保留可用数据。478 收藏 -
Go 用 json.Decoder 读取请求体或消息流时,EOF 可能代表正常结束,也可能暴露出截断输入。本文用连续 JSON、空白和尾部脏数据三个例子,拆开判断方式并给出可复查的读取代码。413 收藏 -
Golang · Go教程 | 1星期前 | WEB开发 · go · net/http · 表单 · html/template · net/http URL参数 html/template 安全输出 Go教程 查询表单
服务端渲染的列表页并不只是读一个 q 参数:筛选条件要能回填,空结果要有明确状态,用户输入也不能直接拼进 HTML。本文用 Go net/http、url.Values 和 html/template 做一个可运行的筛选表单,并整理参数边界与安全输出检查。394 收藏 -
Go 服务更新本地配置时,直接覆盖正式文件可能让读取方看到半截内容。本文用临时文件、写入校验、Sync 和 Rename 组成原子替换流程,并补上权限、并发读取、失败回滚与验收日志。253 收藏 -
Golang · Go问答 | 1星期前 | 微服务 · Context · go并发 · 错误诊断 · 请求取消 · Go 错误处理 context.WithCancelCause context.Cause 取消原因 ctx.Err
服务日志里只出现 context canceled 时,ctx.Err() 只能告诉你流程停了,却说不清是用户取消、上游超时还是业务主动终止。本文用 Go 1.20 引入的 context.WithCancelCause 和 context.Cause 改造一个批量查询场景,说明旧代码影响、兼容边界、错误分类与最小验证方法。465 收藏 -
Go 1.24 为基准测试增加 testing.B.Loop,能替代手写 b.N 循环,让每次基准运行只做一次昂贵的准备和清理,也减少循环体被编译器过度优化的机会。本文对比旧写法,演示迁移步骤,并说明基准数据变化时该怎么判断。243 收藏 -
Golang · Go问答 | 1星期前 | go · 性能排查 · net/http · HTTP客户端 · httptrace · DNS tls 连接复用 httptrace Go问答 HTTP请求慢
Go HTTP 客户端变慢时,只看总耗时无法判断卡在 DNS、建连、TLS 还是服务端响应。本文用 httptrace.ClientTrace 采集分段时间,结合连接复用标记和最小复查清单,定位一次请求变慢的真正环节。393 收藏 -
支付渠道一多,业务代码很容易被供应商 SDK 和字段差异拖住。本文用 Go 拆出支付端口、渠道适配器和业务用例,演示如何保持核心接口稳定,并处理超时、重复回调和渠道错误映射。293 收藏 -
Go HTTP PATCH 更新接口里,字段缺失、显式传 null 和传入新值不能混成一个状态。本文用指针字段、json.RawMessage 和兼容返回设计一个可验证的部分更新接口。456 收藏 -
当一个 HTTP 请求体里连续放着多个 JSON 值时,json.Unmarshal 只能处理单个完整值。本文用 json.Decoder 循环读取连续 JSON,区分正常 EOF、语法错误和尾部脏数据,并给出请求体大小限制、空白字符和资源关闭的检查方法。458 收藏