【Go】Go环境搭建与第一个程序

Go环境搭建与第一个程序

前言

这篇是 Go基础合集 的第一篇学习笔记,这次整理的是 Go 语言的环境搭建和第一个程序。

想学一门新语言,第一步是什么?当然是把环境搭起来!很多人卡在环境配置这一步就放弃了,其实 Go 的安装配置非常简单,比 Java 配置 JAVA_HOMECLASSPATH 那一套省心多了。

今天我们就从零开始,把 Go 环境搭好,跑通第一个 Hello World,顺便把 Go Modules 也讲清楚。

🏠个人主页:山沐与山


文章目录


一、Go语言简介

1.1 为什么学Go?

你可能会问:编程语言这么多,为什么要学 Go?

看看这些用 Go 写的项目你就明白了:DockerKubernetesetcdPrometheus... 云原生时代的半壁江山都是 Go 打下来的。

Go 语言有几个特点让它脱颖而出:

特点 说明
语法简单 关键字只有25个,学习曲线平缓
编译速度快 大型项目也能秒级编译
天生支持并发 goroutine + channel,并发编程简单高效
静态类型 编译期检查类型错误,运行时更安全
单一可执行文件 编译后就一个二进制文件,部署超方便

1.2 Go的版本选择

Go 的版本命名很简单:go1.x.y,比如 go1.21.5

建议 :选择最新的稳定版本,目前推荐 go1.21go1.22

为什么?因为 Go 团队承诺向后兼容,新版本只会更好用,不会破坏老代码。


二、环境安装

2.1 下载安装包

去官网下载:https://go.dev/dl/

根据你的操作系统选择对应版本:

操作系统 文件类型 示例
Windows .msi go1.21.5.windows-amd64.msi
macOS .pkg go1.21.5.darwin-amd64.pkg
Linux .tar.gz go1.21.5.linux-amd64.tar.gz

2.2 Windows安装

下载 .msi 文件后双击运行,一路 Next 就行。

默认安装路径是 C:\Go,建议保持默认,省得后面配置麻烦。

安装完成后,打开命令行验证:

bash 复制代码
go version

输出:

复制代码
go version go1.21.5 windows/amd64

看到版本号就说明安装成功了。

2.3 macOS安装

方法一:下载 .pkg 安装包

双击运行,按提示安装即可,默认安装到 /usr/local/go

方法二:使用 Homebrew(推荐)

bash 复制代码
brew install go

验证安装:

bash 复制代码
go version

2.4 Linux安装

bash 复制代码
# 下载安装包
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz

# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz

# 验证
/usr/local/go/bin/go version

三、环境变量配置

3.1 核心环境变量

Go 有几个重要的环境变量:

变量 说明 示例值
GOROOT Go 安装目录 /usr/local/go
GOPATH 工作目录(存放依赖、编译产物) $HOME/go
GOPROXY 模块代理地址 https://goproxy.cn,direct
GO111MODULE 是否启用 Go Modules on

3.2 配置步骤

Windows

右键"此电脑" → 属性 → 高级系统设置 → 环境变量,添加:

复制代码
GOROOT=C:\Go
GOPATH=%USERPROFILE%\go
GOPROXY=https://goproxy.cn,direct

别忘了把 %GOROOT%\bin 加到 PATH 里。

macOS/Linux

编辑 ~/.bashrc~/.zshrc

bash 复制代码
# Go 环境变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

# 国内代理,下载依赖更快
export GOPROXY=https://goproxy.cn,direct

执行 source ~/.bashrc 使配置生效。

3.3 验证配置

bash 复制代码
go env

这个命令会列出所有 Go 环境变量。重点检查:

bash 复制代码
go env GOROOT
go env GOPATH
go env GOPROXY

四、第一个Go程序

4.1 创建项目

bash 复制代码
# 创建项目目录
mkdir hello
cd hello

# 初始化模块
go mod init hello

go mod init 会创建一个 go.mod 文件,这是 Go Modules 的核心文件。

4.2 编写代码

创建 main.go 文件:

go 复制代码
package main

import "fmt"

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

代码来自 code/main.go

来分析一下这几行代码:

代码 说明
package main 声明包名,main 包是程序入口
import "fmt" 导入标准库的 fmt 包,用于格式化输出
func main() 程序入口函数,必须在 main 包中
fmt.Println() 打印输出并换行

4.3 运行程序

方法一:直接运行

bash 复制代码
go run main.go

输出:

复制代码
Hello, Go!

方法二:编译后运行

bash 复制代码
# 编译
go build -o hello

# 运行
./hello

两种方式的区别是什么?

命令 说明 适用场景
go run 编译并立即运行,不生成可执行文件 开发调试
go build 只编译,生成可执行文件 部署发布

4.4 代码结构说明

一个最简单的 Go 程序需要什么?

复制代码
hello/
├── go.mod      # 模块定义文件
└── main.go     # 程序入口

看到没?就两个文件,比 Java 的 src/main/java/... 那一套简洁多了。


五、Go Modules详解

5.1 什么是Go Modules?

Go 1.11 之前,Go 的依赖管理很痛苦------所有代码都得放在 GOPATH/src 下面。

现在有了 Go Modules,你可以在任意目录创建项目,依赖管理也变得现代化了。

5.2 核心文件

文件 说明
go.mod 模块定义,记录模块名和依赖列表
go.sum 依赖校验,记录依赖的版本和哈希值

看看 go.mod 长什么样:

复制代码
module hello

go 1.21

当你添加依赖后,它会变成这样:

复制代码
module hello

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    github.com/go-redis/redis/v8 v8.11.5
)

5.3 常用命令

命令 说明
go mod init <模块名> 初始化模块
go mod tidy 整理依赖(添加缺失的、删除多余的)
go mod download 下载依赖到本地缓存
go mod vendor 将依赖复制到 vendor 目录
go get <包名> 添加/更新依赖

5.4 添加依赖示例

假设我们要用 gin 框架:

bash 复制代码
go get github.com/gin-gonic/gin

然后就可以在代码里用了:

go 复制代码
package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "Hello, Gin!"})
    })
    r.Run(":8080")
}

执行 go mod tidy 会自动整理依赖。


六、常见问题

6.1 问题1:go: command not found

问题描述 :命令行输入 go 提示找不到命令。

原因分析

  1. Go 没有安装成功
  2. 环境变量没配置正确

解决方案

bash 复制代码
# 检查 Go 是否安装
ls /usr/local/go/bin/go

# 检查 PATH
echo $PATH | grep go

确保 $GOROOT/binPATH 中。

6.2 问题2:下载依赖很慢或超时

问题描述 :执行 go get 时很慢或报错 timeout

原因分析 :默认从 proxy.golang.org 下载,国内访问慢。

解决方案

设置国内代理:

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct

6.3 问题3:go mod init 报错

问题描述 :执行 go mod init 时报错。

原因分析

  1. 当前目录已经有 go.mod 文件
  2. 没有给模块名

解决方案

bash 复制代码
# 正确用法
go mod init myproject

# 如果是 GitHub 项目
go mod init github.com/username/myproject

6.4 问题4:IDE没有代码提示

问题描述:用 VS Code 或 GoLand 写代码没有智能提示。

解决方案

VS Code :安装 Go 插件,然后按 Ctrl+Shift+P,执行 Go: Install/Update Tools,全选安装。

GoLand :确保 GOROOT 配置正确,File → Settings → Go → GOROOT。


七、总结

本文介绍了 Go 语言环境搭建的完整流程,重点包括:

  1. 环境安装:下载安装包,一路 Next
  2. 环境变量 :配置 GOROOTGOPATHGOPROXY
  3. 第一个程序go mod init + go run
  4. Go Modules:现代化的依赖管理

关键命令速查表

命令 说明
go version 查看版本
go env 查看环境变量
go mod init 初始化模块
go run 编译并运行
go build 编译
go mod tidy 整理依赖
go get 添加依赖

下一篇:我们将学习 Go 的变量、常量和基本类型,敬请期待!


热门专栏推荐

等等等还有许多优秀的合集在主页等着大家的光顾,感谢大家的支持

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😊

希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🙏

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🌟

相关推荐
yesyesido11 分钟前
智能文件格式转换器:文本/Excel与CSV无缝互转的在线工具
开发语言·python·excel
_200_13 分钟前
Lua 流程控制
开发语言·junit·lua
环黄金线HHJX.14 分钟前
拼音字母量子编程PQLAiQt架构”这一概念。结合上下文《QuantumTuan ⇆ QT:Qt》
开发语言·人工智能·qt·编辑器·量子计算
王夏奇14 分钟前
python在汽车电子行业中的应用1-基础知识概念
开发语言·python·汽车
He_Donglin15 分钟前
Python图书爬虫
开发语言·爬虫·python
qq_2562470519 分钟前
除了“温度”,如何用 Penalty (惩罚) 治好 AI 的“复读机”毛病?
后端
星融元asterfusion24 分钟前
AsterNOS SONiC基于YANG模型的现代网络管理:从CLI到gNMI的演进
开发语言·sonic·yang
web3.088899926 分钟前
1688商品详情API接口深度解析
开发语言·python
内存不泄露29 分钟前
基于Spring Boot和Vue 3的智能心理健康咨询平台设计与实现
vue.js·spring boot·后端
qq_124987075330 分钟前
基于Spring Boot的电影票网上购票系统的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·spring·毕业设计·计算机毕业设计