前言

决定把 Golang 加入技能树——云原生生态(Docker、Kubernetes、Prometheus)几乎全是 Go 写的,学它性价比极高。第一步,把环境搭顺。

一、安装 Go

方式一:官方二进制包(推荐)

# 下载(国内可用 https://mirrors.aliyun.com/golang/ 加速)
cd /tmp
curl -LO https://go.dev/dl/go1.22.3.linux-amd64.tar.gz

# 解压到 /usr/local
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz

# 配置 PATH(写入 /etc/profile.d/go.sh 对所有用户生效)
cat > /etc/profile.d/go.sh <<'EOF'
export PATH=$PATH:/usr/local/go/bin
EOF
source /etc/profile.d/go.sh

go version     # go version go1.22.3 linux/amd64

方式二:包管理器

dnf install -y golang      # 版本可能偏旧, 看发行版

二、理解环境变量

go env                       # 查看全部配置
go env GOROOT GOPATH GOPROXY
变量 含义
GOROOT Go 安装目录(/usr/local/go)
GOPATH 旧模式的工作区;模块模式下主要放 go install 的二进制(默认 ~/go)
GOPROXY 模块下载代理
GOBIN go install 安装目录(默认 $GOPATH/bin)

国内必做:设置模块代理,否则拉依赖会超时:

go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on

三、第一个程序

mkdir -p ~/dev/hello && cd ~/dev/hello
go mod init hello            # 初始化模块, 生成 go.mod

main.go:

package main

import "fmt"

func main() {
	fmt.Println("Hello, Golang! 👋")
}
# 直接运行
go run main.go

# 编译成二进制(静态编译, 部署超方便)
go build -o hello .
./hello

# 交叉编译: 在 Linux 上编译 Windows 可执行文件
GOOS=windows GOARCH=amd64 go build -o hello.exe .

💡 Go 编译产物是静态链接的,不依赖运行时库,扔到裸机容器(FROM scratch)里就能跑——这是它适合容器化和云原生的原因之一。

四、第二个程序:Web 版 Hello World

package main

import (
	"fmt"
	"log"
	"net/http"
	"time"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, %s! 时间: %s\n", r.URL.Path[1:], time.Now().Format("15:04:05"))
}

func main() {
	http.HandleFunc("/", handler)
	log.Println("listening on :8080")
	log.Fatal(http.ListenAndServe(":8080", nil))
}
go run main.go &
curl http://localhost:8080/zy
# Hello, zy! 时间: 20:15:33

标准库里一个 net/http 就能起服务,不需要任何框架——这就是 Go 的风格。

五、开发工具速配

# 安装 gofmt 官方格式化不用装, 自带。装个常用开发工具集
go install golang.org/x/tools/cmd/goimports@latest

# 确保 ~/go/bin 在 PATH
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.bashrc

VS Code 装 Go 插件(Go Team 出品),打开 .go 文件按提示装全 gopls 等工具即可。

六、常见坑

现象 原因/解决
go: command not found PATH 未包含 /usr/local/go/bin,source 一下
拉依赖超时 没设 GOPROXY,go env -w GOPROXY=https://goproxy.cn,direct
cannot find main module 目录下没有 go.mod,先 go mod init xxx
旧 GOPATH 教程看不懂 现代开发全走 Modules,不用关心 GOPATH/src 那套

小结

环境三步走:装二进制 → 配 GOPROXY → go mod init。接下来就可以正式开始语法学习了:变量、类型、函数与控制流。


本文是「Golang」系列第 1 篇,下篇预告:Golang 基础语法。