Skip to main content

前置课程

本教程完全基于 Ubuntu 系统环境

基本介绍

Go 是由 Google 开发的一门 编译型、静态强类型、并发友好 的系统级语言。主要目标是:简洁、高效、可扩展、便于部署

语言核心特性

特性说明
编译型直接编译为机器码,无需虚拟机,执行速度快
静态类型所有变量都有固定类型,编译期检查错误
内存安全无需手动 malloc/free(有 GC)
内置并发goroutine + channel 简化并发操作
快速构建go build 一键构建为二进制
简洁语法去除继承、泛型(1.18 才加)、异常机制

Go 的三种运行/构建模式(对比 Python 和 C)

模式Go 中做法类似语言对比特点
解释运行go run main.go类似 Python python main.py自动编译成临时二进制文件并运行
本地构建go build -o app类似 C 的 gcc -o app main.c编译出本地平台的可执行文件
交叉编译GOOS=linux GOARCH=amd64 go buildC 的 gcc -target编译为其他平台可执行文件
模块构建go mod init + go buildPython 的虚拟环境 + pip支持依赖管理和版本控制

与 Python 和 C 的对比总结

特性GoPythonC
类型系统静态类型(强类型)动态类型静态类型(弱类型)
执行方式编译执行 or go run解释执行编译执行
并发支持内置 goroutine/channel依赖 asyncio/threadingpthread / 手动管理
内存管理垃圾回收 GC自动内存管理(GC)手动分配与释放
错误处理error 类型返回值try/except 异常机制errno 或返回值判断
开发速度快(语法简单)非常快(无类型约束)慢(结构复杂)
执行性能慢(解释+动态类型)极高(接近底层)
依赖管理go modpip + venv无官方标准,依赖 makefile
可部署性产出单个可执行文件依赖 Python 环境需动态/静态链接

什么时候选择 Go?

  • Web 服务后端 / API 接口
  • 分布式系统(Kubernetes、Docker 就是用 Go 写的)
  • CLI 工具、系统工具、微服务架构

❌ 不太适合:

  • 做 AI / 数据分析(生态不如 Python)
  • 精细内存控制的嵌入式(不如 C)


步骤一:安装 Go 语言

方法一:自动安装

sudo apt update
sudo apt install -y golang-go
go version  # 验证

输出应为

go version go1.22.2 linux/amd64

方法二:手动安装

下载 Go 安装包(以最新版 Go 1.22 为例)

wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz

你可以先访问 https://go.dev/dl/ 查看最新版本链接

解压并安装到 /usr/local(需要 sudo 权限)

sudo rm -rf /usr/local/go        # 清理旧版本
sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz

配置环境变量

将以下内容加入到你的 ~/.bashrc~/.zshrc 文件末尾:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

然后执行以下命令以生效:

source ~/.bashrc     # 如果你用的是 bash
# 或者
source ~/.zshrc      # 如果你用的是 zsh

验证安装

go version

输出应为:

go version go1.22.3 linux/amd64


步骤二:解释输出 Hello World

创建 main.go 文件

nano main.go

内容如下:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

编译并运行

go run main.go

输出:

Hello, World!

什么是“解释输出模式”?

Go 是编译型语言,所以严格来说它并不“解释执行”。 但它提供了一个 go run 命令,让你体验类似 Python 的“写了就能跑”的开发方式。

go run main.go

这会:

  1. 自动编译 main.go → 临时的可执行文件
  2. 立即运行这个可执行文件
  3. 自动删除这个临时文件

虽然看起来像解释器一样运行,但其实是一次性编译 + 执行。

你可以加上 -x 选项观察完整执行过程:

go run -x main.go

系统的临时文件夹,一般是:

  • /tmp/go-build...(Linux/macOS)
  • %TEMP%\go-build(Windows)

在执行 go run 过程中,你可以用以下方式看到中间文件:

go run -work main.go

它会输出:

WORK=/tmp/go-build1223431

你可以进去 /tmp/go-build1223431 看它实际生成的可执行程序。



步骤三:构建二进制可执行文件

构建二进制可执行文件 必须要用 Go Module

Go Module 是 Go 官方推荐的项目管理方式,用于:

  • 管理项目依赖(像 Python 的 requirements.txt
  • 指定项目的包名路径(尤其适用于多人协作)

在你当前目录 执行以下命令:

go mod init Golang_learning

Golang_learning 可以随便写,比如是你的项目名,也可以写成你未来希望的包路径如 github.com/yourname/Golang_learning

执行后会生成一个 go.mod 文件,然后你就可以愉快地构建了:

go build -o hello
./hello

输出:

Hello, World!