环境

第1步:下载go

下载地址

第2步:配置环境变量

  • GOROOT:go的安装目录

  • GOPATH:go的工作目录(全局),一般给文件夹起名叫GoWorkstationGo_WorkSpace等。

    • src:存放源代码

    • pkg:存放依赖包

    • bin:存放可执行文件

      GOPATH 是 Go 早期(Go 1.11 之前)管理依赖和项目代码的核心环境变量,早期go buildgo rungo install等命令会按照当前目录->绝对路径->GOPATH路径查找目标代码。从Go 1.11开始,官方推荐使用Go Modules替代 GOPATH,可以在任意目录管理项目,依赖存储在 go.modgo.sum,而非 GOPATH

  • 其他常用环境变量:GOOSGOARCHGOPROXY,国内用户建议设置 goproxy:export GOPROXY=https://goproxy.cn

    image-20250329160733045

开发

推荐用Goland进行开发,实际运行的时候,如果是写的单独文件,设置按照file文件运行,否则包管理可能会有问题;如果是项目,需要指定目录为xxx/src,指定输出目录为xxx/bin

Go Modules

1. 创建Go Modules项目

go mod init calc-mod:在当前目录初始化一个 Go Modules 项目。会创建 go.mod 文件,内容为module calc-modcalc-mod 是自定义的模块名(通常用于本地开发)。

如果项目计划开源到 GitHub,模块名应改为仓库路径:go mod init github.com/fuxing-repo/fuxing-module-name,通常对应代码仓库的 URL(如 github.com/用户/仓库)。

生成的 go.mod

1
module github.com/fuxing-repo/fuxing-module-name

与 Maven/Gradle 的区别:Go 的设计哲学是去中心化,直接通过代码仓库(GitHub/GitLab 等)分发模块,依赖 Git Tag 版本化。

  • 无需发布到中央仓库:Go 依赖直接从代码仓库(如 GitHub)下载。
  • 版本控制:通过 Git 的标签(Tag)标记版本(如 v1.0.0)。如需指定版本运行 go get github.com/foo/bar@v1.2.3,Go 会自动更新 go.mod

2. 完整流程示例

步骤 1:初始化模块

1
go mod init github.com/fuxing-repo/calculator

步骤 2:编写代码并导入依赖

main.go 中导入第三方库(如 github.com/gin-gonic/gin):

1
2
3
4
5
6
7
8
package main

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

func main() {
r := gin.Default()
r.Run()
}

步骤 3:自动下载依赖

运行任意 Go 命令(如 go buildgo list):

1
go list
  • Go 会:
    1. 解析 import 语句,发现依赖 github.com/gin-gonic/gin
    2. 下载最新版本(或符合 go.mod 约束的版本)。
    3. 更新 go.modgo.sum 文件。

包的管理

Go的import是包级别的,包名就是当前文件夹名称。

一个项目中,可以存在一样的包名,如果需要引用同样的包名,可以用alisa区分。

可见性:无论是变量、函数还是类属性及方法,它们的可见性都是与包相关联的。如果属性名或方法名首字母大写,则可以在其他包中直接访问这些属性和方法,否则只能在包内访问。

结合import可以用一个包名来点出函数、结构体、接口等调用。

入口的package必须是main,否则可以编译成功,但是跑不起来。