Go 临时文件入门:os.CreateTemp、MkdirTemp 和清理责任
临时文件经常出现在后端任务里:下载一个文件后解析,生成报表后上传,图片转换时落盘,或者调用某个只接受文件路径的外部工具。很多初学者会手写固定路径,这在并发和安全上都不稳。Go 标准库提供了 os.CreateTemp 和 os.MkdirTemp,应该优先使用它们。
tag
临时文件经常出现在后端任务里:下载一个文件后解析,生成报表后上传,图片转换时落盘,或者调用某个只接受文件路径的外部工具。很多初学者会手写固定路径,这在并发和安全上都不稳。Go 标准库提供了 os.CreateTemp 和 os.MkdirTemp,应该优先使用它们。
写后端服务时,外部调用失败是常态。网络会抖,依赖会慢,网关会返回 502,数据库也可能短暂不可用。初学者最容易写出两种极端代码:一种完全不重试,偶发错误直接暴露给用户;另一种无脑重试很多次,把一个小抖动放大成更大的压力。正确做法不是“永远重试”或“永不重试”,而是把超时、退避和幂等性一起考虑。
Go 标准库写 JSON API 并不难,难的是写到第十个接口时还能保持清楚。很多初学项目一开始把所有逻辑塞进 handler:解析 JSON、校验字段、查数据库、拼响应、写错误。前两个接口还行,接口多了以后,错误格式不统一,测试也不好写。
深入回顾 Go 1.23 的重要特性:range over function 迭代器模式、unique 包、time 改进、slices/maps 新增方法、性能优化与实际应用案例
全面介绍使用 cobra 框架构建现代命令行工具,包括命令结构、标志参数、子命令、viper 配置集成、Shell 自动补全、彩色输出和交互式提示
从一个小型页面开始讲 Go html/template 的自动转义、安全边界、模板函数和常见误用,适合刚开始写 Go Web 页面的读者。
用一个简单登录态示例讲 Go 中 Cookie、Session ID、HttpOnly、Secure、SameSite、服务端存储和退出登录的基本设计。
写 Go 服务时,调用外部接口慢是很常见的问题。日志里只看到“请求花了 2 秒”,但这 2 秒到底花在哪里?是 DNS 慢、建立连接慢、TLS 握手慢、服务端处理慢,还是响应体下载慢?如果只能靠猜,排查会很痛苦。
深入探索 Go 1.22 的重要特性:range over integers、math/rand/v2 包、ServeMux 路由增强、性能优化与迁移指南
Go 加入泛型后,Contains、Map、Filter、Set 等工具函数可以天然复用。本文讲解类型参数、约束、泛型切片工具、可比较类型和业务代码中的使用边界。
很多小型 Go 服务都有一个内部页面:查看任务队列、触发一次同步、检查缓存状态。它不一定值得接入完整登录系统,但也不能裸奔在公网。HTTP Basic Auth 是一个简单选择。浏览器会弹出用户名密码框,请求头里带上凭据,服务端验证后再允许访问。
2023 年 Go 语言年度回顾与展望 2023 年是 Go 语言发展历程中非常重要的一年。从 2009 年开源至今,Go 已经走过了 14 个年头。这一年,Go 发布了两个重要版本(1.20 和 1.21),生态系统持续壮大,社区活跃度再创新高。
Go 的测试工具很朴素,没有复杂的断言 DSL,也没有必须学习一整套框架的压力。你只要创建一个 文件,写一个 ,再运行 ,就已经能开始了。也正因为它朴素,很多初学者会在项目变大后遇到另一个问题:测试越写越散,失败信息不清楚,新增一个场景要复制一段函数,最后大家都不太愿意补测试。
面向 Go 初学者的基准测试实践:从 testing.B、-benchmem、字符串拼接、切片预分配到如何判断一次优化是否真的有价值。
Go 安全编程:防范常见漏洞 安全是软件开发中最容易被忽视,却又最重要的环节。你可能写出功能完美、性能卓越的代码,但只要一个安全漏洞,就可能让整个系统崩溃,甚至导致用户数据泄露。今天,我们就来深入探讨 Go 语言中的安全编程实践,学习如何防范常见的安全漏洞。
深入探索 Go 1.23 的迭代器特性:range over function、iter 包、Seq/Seq2 模式、惰性求值、与 channel 的对比、性能分析
本文讲解如何用 Go 标准库 flag.FlagSet 实现 add、list、done 这类子命令,帮助初学者组织可维护命令行工具。
Go 项目结构:构建可维护的大型项目 你是否遇到过这样的场景:打开一个 Go 项目,看到所有代码都堆在 里,或者目录结构混乱得像一盘意大利面?随着项目规模增长,这种混乱的结构会让你每次修改代码都像是在拆炸弹——稍有不慎就会引发连锁反应。
Go 1.21 泛型增强:cmp 包与内置 min/max Go 1.18 引入泛型后,社区反响热烈,但也伴随着一些疑问:"泛型是好东西,但标准库什么时候能用上?" 这个疑问非常合理。Go 1.18 虽然引入了类型参数的语法,但标准库中几乎没有使用泛型的包。
本文讲解 Go HTTP ResponseController 的基本使用场景,包括 Flush、写入截止时间、流式响应、SSE 实现和请求取消监听,帮助理解响应控制边界。