Go 正则表达式入门:用 regexp 做校验、提取和替换
正则很好用,但不要让它变成谜语 正则表达式适合处理文本模式:校验格式、提取字段、替换内容、扫描日志。Go 标准库提供了 包,使用起来比较直接。你可以编译一个正则,判断字符串是否匹配,也可以查找子匹配,把日志行拆成结构化数据。
posts
正则很好用,但不要让它变成谜语 正则表达式适合处理文本模式:校验格式、提取字段、替换内容、扫描日志。Go 标准库提供了 包,使用起来比较直接。你可以编译一个正则,判断字符串是否匹配,也可以查找子匹配,把日志行拆成结构化数据。
本文讲解 Go bufio 包中的 Scanner、Reader、Writer 和 Flush,帮助初学者处理逐行读取、大文件统计和缓冲输出。
本文讲解 Go HTTP 服务如何处理 SIGINT、SIGTERM、Server.Shutdown、context 超时和后台任务退出,让服务停止过程更可靠。
Handler 不一定要启动服务才能测试 很多人测试 HTTP 接口时,会先 启动服务,再用 curl 或浏览器访问。这种手动测试有用,但不适合长期保护代码。每次改 handler 都手动点一遍,很快会漏。Go 标准库提供了 ,可以在测试里构造请求、记录响应,不需要真的监听端口。
本文深入讲解 Go JSON 解码的常见细节,包括字段缺失、零值、未知字段、Decoder、RawMessage 和接口请求体处理。
本文通过 JSON 标签和简单 required 校验器讲解 Go 反射的基本概念,帮助初学者理解结构体标签和框架自动绑定背后的机制。
本文讲解 Go 基准测试、benchstat 思路、pprof CPU 和内存分析、常见优化误区,帮助初学者建立先测量再优化的性能习惯。
本文用小型 Web 服务示例讲解 Go 项目结构、cmd、internal、handler、service、store 和配置目录的取舍,帮助初学者避免过度设计。
命令行工具也需要结构 Go 很适合写命令行工具。编译成一个二进制,复制就能运行,启动快,标准库也覆盖了参数解析、文件读写、HTTP 请求和 JSON 编解码。很多团队会用 Go 写内部运维工具、数据迁移脚本、报表生成器和代码生成器。
本文讲解 Go 标准库 html/template 的解析、渲染、数据传递、循环、条件、模板函数和安全转义,适合刚开始写服务端页面的学习者。
本文讲解 Go 标准库 database/sql 的连接池、查询、Scan、Exec、事务和 context 使用,帮助初学者理解数据库访问的基本边界。
本文讲解 Go 标准库 HTTP 客户端的请求构造、响应读取、JSON 编解码、超时、重试和错误处理,适合刚开始对接外部 API 的学习者。
本文讲解 Go time 包中的时间解析、格式化、时区、Duration、Ticker、Timer 和超时控制,帮助初学者处理真实业务时间问题。
程序能跑还不够,还要能排查 很多入门程序只关注“功能能不能运行”。但真实服务上线后,另一个问题会立刻出现:出了问题怎么看?连接哪个端口?数据文件在哪里?请求为什么失败?程序启动时到底读到了什么配置?如果日志混乱、配置散落,排查会非常痛苦。
测试不是额外负担,而是让修改变轻 很多初学者学 Go 时会先写程序,再手动运行几次,看输出差不多就算完成。这个阶段可以理解,但一旦函数里出现业务规则,手动验证很快就不够用了。你今天改了折扣逻辑,明天改了分页边界,后天又修了一个空字符串问题,如果每次都靠肉眼看输出,迟早会漏。
本文讲解 Go 的 package、import、go.mod、导出规则和小项目目录组织,帮助初学者把代码从单文件练习整理成可维护模块。
错误处理:Go 为什么不用 try-catch? 如果你来自 Java、Python 或 C 的世界,第一次看到 Go 的错误处理代码时,你大概会皱眉头: "这什么鬼? 写了一遍又一遍,也太啰嗦了吧?try-catch 不好吗?" 别急,先别下结论。
本文使用 Go 标准库 net/http 构建一个小型 JSON HTTP 服务,讲解路由、请求解析、响应编码、中间件雏形和错误处理。
本文用并发抓取、超时取消和 worker 池示例讲解 Go 的 goroutine、channel、select、WaitGroup 和 context。
接口:Go 最优雅的设计哲学 如果你问我 Go 语言中哪个特性最能体现设计之美,我会毫不犹豫地回答: 接口 。在 Go 的世界里,接口不是用来"约束"的,而是用来"描述"的。它描述的是一种能力——"你能做什么",而不是"你是什么"。这种思维方式的转变,是理解 Go 接口的关键。