Go 语言 的源码组织使用的是包的形式。Go 语言的 main 函数只有在 main 包里面才可以被系统执行。
Golang 中的包与文件夹是一一对应的,必须创建在 GOPATH 目录下才可以被使用。Golang 中的一个包需要引用另一个包的内容,那么必须在开始使用 import 关键字进行导入才可以使用。
Golang 中的任何源代码文件必须属于某个包。源码文件的第一行有效代码必须是 package pacakgeName
语句,通过该语句声明自己所在的包。
Go 语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然 Go 没有强制包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。
包可以定义在很深的目录中,包的定义是不包括目录路径的,但是包的引用一般是全路径引用。比如在 $GOPATH/src/a/b/
下定义一个包 c
。在包 c
的源码中只需声明为 package c
,而不是声明为 package a/b/c
,但是在 import
包 c
时,需要带上路径 import "a/b/c"
。
Go 语言的内置的系统包的源码位于 $GOROOT/src/
目录,因为我们可以直接使用。而自定义的包和第三方的包的源码必须放到 $GOPATH/src
目录下才能被引用。
Golang 程序在执行之前,首先会从 main 包开始,在执行 main 包的 main 函数 之前,Go 引导程序会先对整个程序的包进行初始化。
对包的初始化所做的工作就是从 main 包引入的第一个包开始,递归式的执行每一个被引入的包的 常量、全局变量、init 函数 等。
等所有包的所有的初始化工作都完成之后,开始从 main 包的 main 函数执行我们的程序。
Go 语言的源码组织使用的是包的形式。Go 语言的 main 函数只有在 main 包里面才可以被系统执行。