Go 调试入门:从 fmt.Println 到 go test、race 和 Delve
调试不是乱试,而是缩小问题范围 写 Go 时,bug 可能来自很多地方:变量被遮蔽、切片共享底层数组、map 遍历顺序不稳定、JSON 字段没导出、goroutine 没退出、并发写 map、错误被忽略。
posts
调试不是乱试,而是缩小问题范围 写 Go 时,bug 可能来自很多地方:变量被遮蔽、切片共享底层数组、map 遍历顺序不稳定、JSON 字段没导出、goroutine 没退出、并发写 map、错误被忽略。
本文讲解 Go Modules 的依赖添加、版本选择、go.sum、go mod tidy、replace 和常见排错方式,帮助初学者管理项目依赖。
业务代码里到处都是排序 文章按发布时间倒序,订单按金额排序,排行榜按分数排序,后台列表按状态和创建时间排序。排序看起来是基础算法,但在业务代码里非常常见。Go 标准库的 包提供了常用能力:排序字符串、整数、浮点数,按自定义规则排序结构体切片,做稳定排序和二分搜索。
正则很好用,但不要让它变成谜语 正则表达式适合处理文本模式:校验格式、提取字段、替换内容、扫描日志。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 反射的基本概念,帮助初学者理解结构体标签和框架自动绑定背后的机制。
开场:一个论坛帖子引发的产品改进 周六晚上,一家做项目管理 SaaS 公司的社区论坛里,一个用户发了一篇长帖。他详细描述了自己在管理跨部门项目时遇到的困境:产品里的"项目"概念假设一个项目由一个团队负责,但在他的公司里,一个跨部门项目涉及五个部门,每个部门有自己的进度和任务看板,他需要一个能同时看到全局和各部门细...
本文讲解 Go 基准测试、benchstat 思路、pprof CPU 和内存分析、常见优化误区,帮助初学者建立先测量再优化的性能习惯。
开场:一场关于增速的对话 一家 ARR 刚过五百万的 SaaS 公司完成了 A 轮融资。在投资人进场后的第一次董事会上,投资合伙人开门见山:"你们过去三个季度的环比增长率是百分之十二、百分之十五和百分之十三。按这个速度,你们需要大概两年半才能到两千万 ARR。
本文用小型 Web 服务示例讲解 Go 项目结构、cmd、internal、handler、service、store 和配置目录的取舍,帮助初学者避免过度设计。
开场:一次改变公司方向的客户拜访 一家做协作工具的 SaaS 公司,前三年的客户主要是中小型企业,团队规模在五十到三百人之间。产品做得不错,用户口碑也好,ARR 稳步增长。但管理团队心里清楚,中小企业市场的客单价天花板很低,要支撑公司的长期增长和估值预期,必须进入企业级市场。
命令行工具也需要结构 Go 很适合写命令行工具。编译成一个二进制,复制就能运行,启动快,标准库也覆盖了参数解析、文件读写、HTTP 请求和 JSON 编解码。很多团队会用 Go 写内部运维工具、数据迁移脚本、报表生成器和代码生成器。
开场:一个运营人员的周末 周五下午五点,一家电商公司的运营主管接到市场总监的电话:下周一要上线一个会员积分活动,需要用户在活动页面填写信息、选择礼品、提交兑换请求,后台要能统计和审核。技术部门说排期要两周以后。
本文讲解 Go 标准库 html/template 的解析、渲染、数据传递、循环、条件、模板函数和安全转义,适合刚开始写服务端页面的学习者。
开场:一家区域代理商的选择 老张在华南经营一家 IT 服务公司,过去十年主要帮企业做本地软件的部署和维护。随着越来越多的客户开始询问云端方案,他意识到自己的业务模式需要转型。在一次行业展会上,他和三家 SaaS 公司交换了联系方式,开始认真考虑成为 SaaS 产品的区域代理商。
开场:董事会上的数字游戏 一家 B 轮 SaaS 公司的季度董事会正在进行。CEO 展示了令人满意的收入增长曲线,ARR(年度经常性收入)同比增长了百分之八十。但一位投资人翻到了附录页,指着一个数字问:"你们的净收入留存率是百分之九十二,这意味着每年仅存量客户就在流失百分之八的收入。
本文讲解 Go 标准库 database/sql 的连接池、查询、Scan、Exec、事务和 context 使用,帮助初学者理解数据库访问的基本边界。