1.一个最基本的Go程序

1
2
3
4
5
6
7
package main //定义一个包

import "fmt" //声明fmt包的导入路径

func main() { //main函数
fmt.Println("hello, world") //Println函数定义于fmt包中
}

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
2
$ go build main.go//编译,得到一个二进制文件
$ ./main //执行

使用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 两个文件与源码,一并提交到代码版本控制服务器上