Go 后端编程小书(上) · 卷 1

前言:这本书怎么读

本章问题:这本书写给谁,怎么读,上册的边界在哪里?


写给谁

这本书写给已经会一点编程、正在进入后端开发的人。

你不需要熟悉 Go,但最好已经知道变量、函数、条件判断、循环这些基本概念,也大概知道 HTTP 请求、JSON 和命令行是什么。

如果你来自 JavaScript、Python、Java、PHP 或其他语言,都可以读。遇到 Go 特有的设计,比如显式错误处理、结构体方法、接口和 context,本书会从例子开始讲,不会假设你已经知道。

本书不适合作为 Go 语言参考手册。它更像一个后端同事带你走一遍入门路径:先让程序跑起来,再慢慢把类型、错误、包、HTTP、测试和并发放进同一条工作流里。


上册的边界

上册不会覆盖 Go 的每个角落。比如反射、泛型的复杂用法、unsafe、调度器细节、性能剖析、数据库连接池调优,这些都不在上册的主线里。

我们先关心更基础的问题:

  • 一个 Go 程序如何启动?
  • 一个请求参数应该如何建模?
  • 一个函数失败时应该如何返回错误?
  • 一个包应该暴露哪些东西?
  • 一个 HTTP handler 怎样解析输入、返回输出?
  • 一个函数怎么测?
  • 一个请求超时后,后台任务该不该继续跑?

这些问题不华丽,但它们每天都会出现在后端代码里。

如果你能把这些事做清楚,再去学数据库、框架、微服务和性能优化,会轻松很多。反过来,如果这些基本习惯没有建立,复杂架构只会把问题藏得更深。


为什么不从语法表开始

很多人第一次学一门语言,会从语法表开始:变量、数字、字符串、数组、函数、类、异常、模块。这个顺序没有错,但它很容易让人产生一种错觉:只要把语言特性都看完,就算学会了这门语言。

后端开发不是这样。

一个后端程序不是语法点的集合,而是一组会长期运行、会失败、会被别人修改的代码。你当然要学语法,但语法应该尽早进入具体场景:请求参数怎么建模,错误怎么返回,JSON 字段名怎么控制,handler 怎么测试。

所以这本书会少做“枚举”,多做“串联”。每一章都尽量回答一个实际问题,而不是把所有相关语法一次性铺开。


本书怎么写代码

代码会尽量保持小。不是因为真实项目都这么短,而是因为学习阶段最重要的是看清边界。

当我们讲错误处理时,就先写一个读取配置文件的函数;当我们讲 HTTP 服务时,就先写一个返回用户信息的接口;当我们讲测试时,就先测一个纯函数,再测一个 handler。

你会看到一些刻意克制的选择。能用一个文件说明问题时,先不拆十个目录;能直接返回错误时,先不引入复杂错误体系;能用普通函数测试时,先不引入 mock 框架。

这不是说框架、分层和工具不重要。它们很重要,只是不应该在你还没看清基本工作方式之前抢走注意力。


读完上册,你应该能做到什么

读完上册后,你应该能独立完成一个小型 Go 后端服务:

  • go mod 创建项目
  • 定义请求和响应结构体
  • 写清楚函数的输入、输出和错误
  • 用包组织代码
  • 读取 JSON 配置和环境变量
  • net/http 暴露接口
  • 写表格驱动测试和 handler 测试
  • 在请求链路中传递 context.Context
  • 构建出一个可运行的二进制文件

这还不是高级后端工程,但已经是一个很可靠的开始。


建议的读法

第一遍按顺序读,并且把代码敲进自己的目录里运行。不要只复制结果,尽量自己打出命令、看错误、改代码、再运行。

第二遍可以带着问题回看。比如你写 HTTP handler 时卡住了,就回到 JSON、错误处理和测试章节;你不理解为什么函数要传 context.Context,就回到并发那一章。

这本书的目的不是让你一次记住所有细节,而是先建立一条清楚的路径。之后你遇到更大的项目,知道应该从哪里拆开看。

SECTION §02 · ENGAGE

Discussion

留言区 · GitHub-powered comments via Giscus