Go程序的结构
1.一个最基本的Go程序
1 | package main //定义一个包 |
1.1 包的概念
包(package)是Go语言的基本组成单元,一个Go程序本质上就是一组包的集合
整个Go程序中只能存在一个main包
1.2 main函数
当执行一个可执行的Go程序时,程序执行的入口就是main函数
1.3 声明包的导入路径
import “fmt”指的是,导入标准库fmt目录下的包
1.4 fmt包
fmt.Println(“hello, world”)中的fmt指的是包名,和import “fmt”中的fmt不一样
1.5 Println函数
Println函数位于标准库fmt目录下的fmt包中,Println的首字母大写,代表对fmt包外的代码可见,如果全部是小写,代表只在声明它的包内可见
2.Go程序的编译和执行
2.1 使用go build命令进行编译
1 | $ go build main.go//编译,得到一个二进制文件 |
使用go build命令进行编译,编译成功后得到一个可执行二进制文件,这个二进制文件在没有go的环境中也可以执行
2.2 使用go run命令可直接执行go源文件
1 | $ go run main.go |
go run命令更多的是开发和调试阶段使用,在实际的项目中要先使用go build进行构建
3.Go module
Go module是Go默认的包依赖管理机制和Go源码构建机制。
一个 module 就是一些包的集合,这些包和 module 一起打版本、发布和分发。
Go Module 的核心是一个名为 go.mod 的文件,在这个文件中存储了这个 module 对第三方依赖的全部信息。
3.1 go.mod文件的生成
进入目标目录,执行
1 | $ go mod init github.com/hellomodule //go mod 初始化的时候一般用源代码存储仓库,使 go 工具能下载到,如果只是本地测试可以随便起名,如: example/hellomodule |
执行完成之后,在目标目录下成功一个go.mod文件,这个目标目录称为被声明的module的根目录
3.2 添加依赖包的版本信息
手动添加
使用go mod tidy命令自动添加
3.3 go.sum文件
go.sum 的文件,这个文件记录了 hellomodule 的直接依赖和间接依赖包的相关版本的 hash 值,用来校验本地包的真实性。在构建的时候,如果本地依赖包的 hash 值与 go.sum 文件中记录的不一致,就会被拒绝构建
推荐把 go.mod 和 go.sum 两个文件与源码,一并提交到代码版本控制服务器上