首页 / Go 语言入门教程 / Go 语言简介

Go 语言入门教程

Go 语言简介

本教程共 80 篇 · 第 1 篇 · 更新于 2026-07-27 · 约 6 分钟阅读

GoGo 入门教程Go 简介编程语言云原生并发编程

1. Go 语言简介

本节目标:了解 Go 从哪里来、为什么被创造出来、适合做什么,建立对这门语言的整体认知。

Go 是什么

Go 是 Google 在 2009 年开源的一门编程语言。因为早期官网域名是 golang.org,社区里也常叫它 Golang,但官方名称就是 Go。

它的三位创始人分别是 Robert Griesemer、Rob Pike 和 Ken Thompson——这三位都是计算机领域的重量级人物。

Ken Thompson 是 Unix 操作系统和 B 语言(C 语言的前身)的设计者,Rob Pike 参与了 UTF-8 编码的设计,Robert Griesemer 参与了 Java HotSpot 编译器和 V8 引擎的开发。

简单说,这门语言的起点很高。

为什么要有 Go

Go 诞生的背景其实很实际。2000 年代后期,Google 内部的代码库已经非常庞大,C++ 编译一次要等好几分钟甚至几十分钟。Java 开发效率不错,但运行时太重。Python 写起来快,但性能不够。

三位创始人想造一门这样的语言:

  • 编译快:像脚本语言一样,改完代码马上能跑
  • 运行快:接近 C 的性能
  • 写起来简单:语法少,没有花里胡哨的东西
  • 天生并发:多核时代,并发不能是附加题
  • 工程友好:大团队协作时不容易出错

Go 的哲学可以用一句话概括:少即是多。它不追求语言特性的丰富,而是追求用最少的语法做最多的事。

Go 的核心特性

我挑几个最影响你日常写代码的说。

简洁的语法

Go 只有 25 个关键字,比 Java 的 50 个少一半。没有类继承,没有泛型模板元编程(泛型在 1.18 加入,但用法很克制),没有异常处理的 try-catch(用 error 接口替代)。

你学完基础语法大概两周,就能开始写真正的项目了。

天生并发

Go 的并发模型叫 CSP(Communicating Sequential Processes),核心是两个东西:

  • goroutine(协程):比线程轻量得多的并发单位,创建一个 goroutine 只需要几 KB 内存
  • channel(通道):goroutine 之间通信的管道

Go 社区有一句名言:「不要通过共享内存来通信,而要通过通信来共享内存」。这句话你现在可能不理解,等学到并发章节就明白了。

编译型,静态类型

Go 是编译型语言,源代码直接编译成机器码,运行不需要虚拟机。同时它又是静态类型的,变量类型在编译期就确定了,很多错误在编译时就能发现。

但 Go 的类型系统不像 Java 那么啰嗦,它支持类型推断,写 x := 42 就行,不用写 int x = 42

工具链一体化

Go 自带了完整的工具链,不需要装一堆插件:

  • go build 编译
  • go run 直接运行
  • go test 跑测试
  • go fmt 统一代码格式
  • go mod 管理依赖
  • go vet 静态检查

一个人写代码也好,一个团队协作也好,格式和风格天生统一。

快速编译

C++ 大项目编译几十分钟是常态,Go 大项目编译几秒到几十秒就够了。这是因为 Go 的编译器设计上就追求速度——依赖关系简单,不允许循环引用,头文件机制也和 C/C++ 完全不同。

交叉编译

在 Windows 上写代码,想编译成 Linux 上能跑的二进制?设两个环境变量就行:

set GOOS=linux
set GOARCH=amd64
go build

这个特性在写容器化应用时特别方便,你不用在每台机器上都装 Go。

Go 适合做什么

Go 最擅长的领域是后端服务和云原生基础设施。举几个例子:

  • Web 服务和 API:高并发、低延迟的 HTTP 服务,Go 的标准库 net/http 就够用
  • 微服务:Go 编译出来的是单个二进制文件,部署极其方便,启动快,内存占用小
  • 云原生工具:Docker、Kubernetes、etcd、Prometheus、Terraform、CockroachDB——这些你听过的知名项目全都是 Go 写的
  • CLI 工具:交叉编译 + 单二进制分发,写命令行工具特别合适
  • 网络编程:goroutine + channel 天生适合处理大量并发连接

Go 和其他语言对比

特性GoJavaPythonC++
编译速度极快不编译很慢
运行性能中高极高
并发模型goroutine线程GIL 限制线程
学习难度
部署方式单二进制JVM解释器二进制
适合领域后端/云原生企业级/Android数据/AI/脚本系统/游戏/高性能
Note

Go 不是万能的。它不适合写操作系统内核,不适合做前端界面,也不适合做需要大量数值计算的科学计算场景。但在后端服务领域,它目前是非常有竞争力的选择。

Go 的版本演进

了解 Go 的版本历史对你学习有帮助,因为教程里会标注哪些特性是哪个版本引入的:

版本年份里程碑
1.02012第一个正式版
1.52015自举(用 Go 写 Go 编译器)
1.112018引入模块(Module)机制
1.182022泛型(Generics)正式发布
1.212023slices/maps/cmp 标准库、min/max 内置函数
1.222024循环变量每次迭代新建、range over int
1.232024range over func(迭代器函数)
1.242025泛型类型别名、go.mod tool 指令
1.252025Green Tea GC 实验、容器感知 GOMAXPROCS
1.262026new(expr)、go fix 现代化器、Green Tea GC 默认启用

本教程基于 Go 1.26.5(Go 1.26.0 发布于 2026-02-10),所有内容以这个版本为准。

学完这节你能做什么

  • 知道 Go 是什么语言,谁创造的,为什么被创造
  • 了解 Go 的核心优势和适用场景
  • 对 Go 版本演进有基本概念,知道哪些特性是新的

下一节我们开始动手——安装 Go 开发环境。

上一篇
已经是第一篇啦
下一篇
安装 Go 开发环境