这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
Go 模板入门:用 html/template 生成安全的 HTML 页面
本文讲解 Go 标准库 html/template 的解析、渲染、数据传递、循环、条件、模板函数和安全转义,适合刚开始写服务端页面的学习者。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
本文讲解 Go 标准库 html/template 的解析、渲染、数据传递、循环、条件、模板函数和安全转义,适合刚开始写服务端页面的学习者。
开场:一家区域代理商的选择 老张在华南经营一家 IT 服务公司,过去十年主要帮企业做本地软件的部署和维护。随着越来越多的客户开始询问云端方案,他意识到自己的业务模式需要转型。在一次行业展会上,他和三家 SaaS 公司交换了联系方式,开始认真考虑成为 SaaS 产品的区域代理商。
开场:董事会上的数字游戏 一家 B 轮 SaaS 公司的季度董事会正在进行。CEO 展示了令人满意的收入增长曲线,ARR(年度经常性收入)同比增长了百分之八十。但一位投资人翻到了附录页,指着一个数字问:「你们的净收入留存率是百分之九十二,这意味着每年仅存量客户就在流失百分之八的收入。
本文讲解 Go 标准库 database/sql 的连接池、查询、Scan、Exec、事务和 context 使用,帮助初学者理解数据库访问的基本边界。
本文讲解 Go 标准库 HTTP 客户端的请求构造、响应读取、JSON 编解码、超时、重试和错误处理,适合刚开始对接外部 API 的学习者。
开场:一封退订邮件的重量 周一早上,一家做客服 SaaS 公司的客户成功经理打开邮箱,看到了一封来自长期客户的邮件。邮件很简短:「我们决定下个月不再续费了,感谢你们一直以来的服务。「 这个客户已经使用了两年,从一个部门扩展到三个部门,年合同金额从最初的八万增长到了二十二万。
开场:签约之后最危险的日子 一家连锁零售企业签了一份 HR SaaS 的年度合同,金额不小,管理层对这个项目寄予厚望。签约那天,供应商的销售团队发来了一封热情洋溢的欢迎邮件,附上了一个项目启动的时间表和一份需要客户填写的信息收集表。
本文讲解 Go time 包中的时间解析、格式化、时区、Duration、Ticker、Timer 和超时控制,帮助初学者处理真实业务时间问题。
程序能跑还不够,还要能排查 很多入门程序只关注“功能能不能运行”。但真实服务上线后,另一个问题会立刻出现:出了问题怎么看?连接哪个端口?数据文件在哪里?请求为什么失败?程序启动时到底读到了什么配置?如果日志混乱、配置散落,排查会非常痛苦。
开场:一次宕机事件的连锁反应 某天凌晨两点,一家做财务 SaaS 的公司收到了一连串告警。一个客户的批量报表导出任务占用了过多的数据库连接,导致同一数据库实例上的其他十几个客户也出现了响应变慢甚至超时的情况。值班工程师花了四十分钟定位问题,临时限制了单租户的资源使用,才让系统恢复正常。
测试不是额外负担,而是让修改变轻 很多初学者学 Go 时会先写程序,再手动运行几次,看输出差不多就算完成。这个阶段可以理解,但一旦函数里出现业务规则,手动验证很快就不够用了。你今天改了折扣逻辑,明天改了分页边界,后天又修了一个空字符串问题,如果每次都靠肉眼看输出,迟早会漏。
开场:一笔典型订单的背后 一家中型制造企业在选型 CRM 系统时,先后接触了四家供应商。第一家通过线上广告获取了线索,SDR 在两天内打了电话,安排了一次产品演示。第二家是通过行业峰会的展台认识的,销售当场交换了名片,一周后发来了一份定制化的解决方案。
开场:一个产品会议上的分歧 某家做项目管理 SaaS 的团队在季度评审上发生了争执。产品经理认为应该加大投入做甘特图功能,因为竞品都有,客户在选型时也经常问到。工程负责人则拿出后台数据,指出过去三个月只有不到百分之八的活跃用户点开过现有的时间线视图,大部分用户每天登录后的路径是:查看任务列表、更新状态、发消息、退...
本文讲解 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 的基本数据类型、切片、map、指针。但如果你要描述一个更复杂的事物——比如一个「用户「,他有姓名、年龄、邮箱、注册时间等多个属性——用基本类型就不够用了。
小工具是学习 Go 的好方式 学 Go 不一定要从 Web 框架开始。很多时候,一个能解决自己问题的命令行工具更适合入门:代码量不大,不需要数据库,也不需要前端,但会用到文件、JSON、参数解析、错误处理和结构体建模。这些都是 Go 日常开发的基本能力。
指针:没有你想的那么可怕 提到"指针",很多人的第一反应是恐惧。这很正常——在 C/C++ 的世界里,指针确实是很多 bug 的根源:野指针、空指针、内存泄漏、缓冲区溢出……简直是一场噩梦。但是, Go 语言的指针完全不一样 。