2、Go开发环境搭建:Go SDK安装与配置、GOPATH与Go Modules介绍、第一个Go程序(Hello World)

说实话,每次带新人入行Go,我都要先帮他们搞定环境。这一步看似简单,但坑是真不少。我自己就曾经因为环境变量配错,折腾了整整一个下午。今天咱们就把这事彻底捋清楚。

2.1 Go SDK安装与配置

先说说SDK安装。Go的安装包可以从官网下载,支持Windows、macOS、Linux三大平台。我个人习惯用Linux开发,但Windows和macOS也完全没问题。

Windows安装

下载.msi安装包,双击运行。默认路径是C:\Go。安装完成后,打开命令行输入go version,如果看到版本号,说明安装成功。

注意: 我曾经遇到过安装路径包含中文导致编译失败的情况。建议路径中不要有中文或空格。

macOS安装

用Homebrew最省事:

brew install go

或者下载.pkg安装包手动安装。我个人推荐用Homebrew,升级方便。

Linux安装

下载tar.gz包,解压到/usr/local

wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

然后配置环境变量。打开~/.bashrc~/.zshrc,添加:

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

执行source ~/.bashrc使其生效。

验证安装

go version
# 输出示例:go version go1.21.0 linux/amd64

嗯,看到这个输出,基本就稳了。

2.2 GOPATH与Go Modules

这里我要重点说说。很多初学者被GOPATH和Go Modules搞晕过。说白了,它们都是Go用来管理代码和依赖的机制。

GOPATH是什么?

在Go 1.11之前,所有Go代码都必须放在GOPATH目录下。GOPATH默认是$HOME/go。结构是这样的:

$HOME/go/
├── bin/    # 编译后的可执行文件
├── pkg/    # 编译后的包文件
└── src/    # 源代码
    └── github.com/
        └── 用户名/
            └── 项目名/

说实话,这种模式挺别扭的。你想想看,所有项目都挤在一个目录下,版本管理也麻烦。我在早期项目中就吃过这个亏——两个项目依赖同一个库的不同版本,结果冲突了。

Go Modules:新时代的解决方案

从Go 1.11开始,官方推出了Go Modules。它允许你在项目目录外开发,每个项目独立管理依赖版本。说白了,就是每个项目都有自己的go.mod文件,记录依赖信息。

启用Go Modules很简单,设置环境变量:

export GO111MODULE=on

从Go 1.16开始,这个变量默认就是on了。所以新版本基本不用操心。

go.mod文件长什么样?

module myproject

go 1.21

require (
    github.com/gin-gonic/gin v1.9.0
    github.com/go-sql-driver/mysql v1.7.0
)

这里module指定了模块名,require列出了依赖。每次执行go mod tidy,Go会自动整理依赖关系。

我的建议: 新项目一律用Go Modules。GOPATH模式已经过时了,除非你在维护老项目。

2.3 第一个Go程序:Hello World

环境搭好了,咱们来写第一个程序。这是每个Go开发者的起点。

创建项目目录

mkdir hello-world
cd hello-world
go mod init hello-world

执行go mod init后,会生成go.mod文件。这个文件就是项目的身份证。

编写代码

创建main.go文件:

package main

import "fmt"

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

代码很简单,但有几个要点:

  • package main:声明这是一个可执行程序
  • import "fmt":引入标准库的fmt包,用于格式化输出
  • func main():程序入口函数
  • fmt.Println:打印并换行

运行程序

go run main.go
# 输出:Hello, World!

看到输出了吧?恭喜你,第一个Go程序跑起来了。

编译成可执行文件

go build -o hello main.go
./hello
# 输出:Hello, World!

go build会生成一个二进制文件。你可以把它复制到任何同平台的机器上运行,不需要安装Go环境。这就是Go的静态编译特性。

小技巧:go build -ldflags="-s -w"可以减小生成文件的大小。我在部署生产环境时经常这么干。

2.4 常见问题与避坑指南

最后分享几个我踩过的坑:

  • 代理问题: 国内访问Go官方仓库慢。设置代理:go env -w GOPROXY=https://goproxy.cn,direct
  • 版本冲突: 不同项目用不同Go版本?用go install golang.org/dl/go1.20@latest安装多版本
  • 环境变量不生效: 修改.bashrc后记得source,或者重启终端

我曾经因为忘记设置GOPROXY,下载依赖等了半小时。后来学乖了,装好Go第一件事就是配代理。

好了,环境搭建就到这里。下一章咱们聊聊Go的基础语法,包括变量、数据类型和控制结构。到时候见。