环境
第1步:下载go
(下载地址)
第2步:配置环境变量
GOROOT
:go的安装目录GOPATH
:go的工作目录(全局),一般给文件夹起名叫GoWorkstation
、Go_WorkSpace
等。src
:存放源代码pkg
:存放依赖包bin
:存放可执行文件GOPATH
是 Go 早期(Go 1.11 之前)管理依赖和项目代码的核心环境变量,早期go build
、go run
或go install
等命令会按照当前目录->绝对路径->GOPATH路径查找目标代码。从Go 1.11开始,官方推荐使用Go Modules替代GOPATH
,可以在任意目录管理项目,依赖存储在go.mod
和go.sum
,而非GOPATH
。
其他常用环境变量:
GOOS
,GOARCH
,GOPROXY
,国内用户建议设置 goproxy:export GOPROXY=https://goproxy.cn
开发
推荐用Goland进行开发,实际运行的时候,如果是写的单独文件,设置按照file
文件运行,否则包管理可能会有问题;如果是项目,需要指定目录为xxx/src
,指定输出目录为xxx/bin
。
Go Modules
1. 创建Go Modules项目
go mod init calc-mod
:在当前目录初始化一个 Go Modules 项目。会创建 go.mod
文件,内容为module calc-mod
,calc-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 | package main |
步骤 3:自动下载依赖
运行任意 Go 命令(如 go build
或 go list
):
1 | go list |
- Go 会:
- 解析
import
语句,发现依赖github.com/gin-gonic/gin
。 - 下载最新版本(或符合
go.mod
约束的版本)。 - 更新
go.mod
和go.sum
文件。
- 解析
包的管理
Go的import
是包级别的,包名就是当前文件夹名称。
一个项目中,可以存在一样的包名,如果需要引用同样的包名,可以用alisa
区分。
可见性:无论是变量、函数还是类属性及方法,它们的可见性都是与包相关联的。如果属性名或方法名首字母大写,则可以在其他包中直接访问这些属性和方法,否则只能在包内访问。
结合import
可以用一个包名来点出函数、结构体、接口等调用。
入口的package必须是main,否则可以编译成功,但是跑不起来。