GO语言基础教程18——包
GO语言基础教程18——包
Go语言中支持模块化的开发理念,在Go语言中使用包(package)
来支持代码模块化和代码复用。一个包是由一个或多个Go源码文件(.go结尾的文件)组成,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt
、os
、io
等。
定义包
我们可以根据自己的需要创建自定义包。一个包可以简单理解为一个存放.go
文件的文件夹。该文件夹下面的所有.go
文件都要在非注释的第一行添加如下声明,声明该文件归属的包。
package packagename
注意: 一个文件夹下面直接包含的文件只能归属一个包,同一个包的文件不能在多个文件夹下。包名为main
的包是应用程序的入口包,这种包编译后会得到一个可执行文件,而编译不包含main
包的源代码则不会得到可执行文件。
标识符可见性
如果想让一个包中的标识符(如变量、常量、类型、函数等)能被外部的包使用,那么标识符必须是对外可见的(public)。在Go语言中是通过标识符的首字母大/小写来控制标识符的对外可见(public)/不可见(private)的。在一个包内部只有首字母大写的标识符才是对外可见的。
包的引入
要在当前包中使用另外一个包的内容就需要使用import
关键字引入这个包,并且import语句通常放在文件的开头,package
声明语句的下方。完整的引入声明语句格式如下:
import importname "path/to/package"
当引入的多个包中存在相同的包名或者想自行为某个引入的包设置一个新包名时,都需要通过importname
指定一个在当前文件中使用的新包名。例如,在引入fmt
包时为其指定一个新包名f
。
import f "fmt"
init初始化函数
在每一个Go源文件中,都可以定义任意个如下格式的特殊函数:
func init(){ // ... }
这种特殊的函数不接收任何参数也没有任何返回值,我们也不能在代码中主动调用它。当程序启动的时候,init函数会按照它们声明的顺序自动执行。init函数结束后执行main函数。
go module
命令 | 介绍 |
go mod init | 初始化项目依赖,生成go.mod文件 |
go mod download | 根据go.mod文件下载依赖 |
go mod tidy | 比对项目文件中引入的依赖与go.mod进行比对 |
go mod graph | 输出依赖关系图 |
go mod edit | 编辑go.mod文件 |
go mod vendor | 将项目的所有依赖导出至vendor目录 |
go mod verify | 检验一个依赖包是否被篡改过 |
go mod why | 解释为什么需要某个依赖 |