Go 语言简介
在动手装环境之前,我们先认识一下 Go 语言到底是什么、为什么值得学、能用它做什么。理解了背景,学习的时候会更有的放矢。
Go 是什么?
Go(又称 Golang)是 Google 在 2007 年开始研发、2009 年正式对外开源的一门静态编译型语言。它的目标是:在保留 C 语言高效的同时,让代码写起来像 Python 一样简洁,并且天生支持并发编程。
诞生背景:三位大师的"不满"
Go 的诞生源于三位顶级工程师对当时主流语言的不满:
- Robert Griesemer:Google V8 引擎、Java HotSpot 编译器的核心开发者。
- Rob Pike:Unix 团队成员、UTF-8 编码的发明者之一。
- Ken Thompson:Unix 之父、C 语言之父之一,图灵奖得主,B 语言的发明者。
故事是这样的:2007 年的一天,他们在等 Google 的 C++ 服务器编译,等了快一个小时还没编译完。Rob Pike 半开玩笑说:"我们干脆自己设计一门新语言吧。"于是三个人午休时间就开始写草稿,Go 就此诞生。所以 Go 的核心设计目标就是:
- 解决 C++ 编译慢、语法复杂(模板、头文件)的问题;
- 解决 Java 写起来冗长、依赖 JVM 的问题;
- 解决 Python 运行慢、不适合写高性能后端的问题;
- 面向多核 CPU 时代,让并发编程变得简单。
Go 的核心特点
- 静态类型 + 编译型:编译期检查类型错误,运行性能接近 C,远超 Python/Java。
- 语法极简:只有 25 个关键字,没有继承、没有泛型语法糖(直到 1.18 才加入),上手快。
- 编译飞快:大型项目几秒到几十秒就能编译完,不像 C++ 动辄几分钟。
- 原生并发:通过
goroutine(轻量级线程)和channel(通道)实现 CSP 并发模型,开一个并发任务只需一句go func()。 - 单文件部署:
go build出来的二进制包含所有依赖,扔到服务器上就能跑,不需要装运行时。 - 自带垃圾回收(GC):不用手动管理内存,像 Java/Python 一样省心。
- 交叉编译方便:在 Mac 上设两个环境变量,就能编译出 Windows/Linux 版本,不需要装交叉编译工具链。
- 强标准库:net/http、encoding/json、database/sql 等开箱即用,写后端服务基本不用第三方框架。
第一个 Go 程序
说了这么多,先看一眼代码。Go 的"Hello World"长这样:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
// 输出: Hello, World!运行它只需要两步:
# 1. 把上面代码保存为 hello.go
# 2. 直接运行(不生成可执行文件)
go run hello.go
# 输出: Hello, World!
# 3. 或者编译成二进制再执行
go build hello.go # 生成 hello 可执行文件
./hello # 运行它
# 输出: Hello, World!是不是和 C 很像?但少了头文件、少了分号、少了 #include 那套预处理。package main 表示这是一个可执行程序(不是库),func main() 是入口。
Go 都用在哪?典型应用场景
Go 是云原生时代的"母语"。下面这些你一定听过的明星项目,全是 Go 写的:
- 容器与编排:Docker、Kubernetes、containerd、Podman。
- 分布式存储/数据库:etcd(K8s 的基石)、CockroachDB、TiDB、InfluxDB。
- 监控与可观测性:Prometheus、Grafana Loki、Jaeger。
- 基础设施即代码:Terraform、Pulumi。
- 微服务:go-micro、Kratos、Kitex(字节跳动)。
- 网络服务:Caddy 服务器、Cilium(eBPF)、frp 内网穿透。
- CLI 工具:Hugo(博客生成器)、fzf、gh(GitHub 官方 CLI)。
简单说:需要高并发、需要部署简单、需要性能稳定的后端场景,Go 都很合适。
Go vs 其他语言
- vs Java:Go 没有 JVM,启动快、内存占用低;没有类继承体系,写起来更轻。但生态没 Java 那么成熟(企业级)。
- vs Python:Go 性能是 Python 的几十倍,且编译成单文件部署;但写脚本/数据科学 Go 不如 Python 方便。
- vs C++:Go 编译快得多,语法简单得多,自带 GC;但极致性能(游戏引擎、嵌入式)仍不如 C++。
- vs Rust:Go 更简单、编译更快、并发更顺手;Rust 更安全(无 GC)、性能更强,但学习曲线陡峭。
该不该学 Go?
如果你的方向是后端开发、云原生、DevOps、基础架构,Go 几乎是必修课。学完本系列,你将能独立用 Go 写一个完整的 Web 服务、读懂 Kubernetes 源码、构建自己的 CLI 工具。
← 返回 Go 教程目录
下一篇 Go 环境安装 →