其实准备之后再研究包这个东西的,但是对于Go语言包是管理源码的方式,还是仔细了解一下吧。
之前几章的代码都是在一个go文件中测试运行的,但是实际项目肯定不止一个文件,使用包可以使Go程序更加容易维护。
package xxx 这行代码表示此文件属于哪一个包,一般放在第一行。
如果使用package main则表示,此文件会生成可执行文件,且必须有main函数,否则:function main is undeclared in the main package。
【工作区】
Go安装完毕后,GOPATH会出现在环境变量中(以windows为例),可以添加自己的工作区域。
【创建包】
假设工作区的路径是: D:go_workspacego,我们手动新建一个包,那么包的目录结构如下:
src hello hello.go bin hello.exe
其中bin目录是会自动生成的,包构建完毕后,我们在hello.go中放入Hello Go!测试代码。 输入 go install hello, 这是使用install编译,而且不需要切换到源码路径下。
如果编译成功,那么bin目录会自动生成,hello.exe也会在bin目录下。
【调用其他包】
再创建一个function包,新建string.go,目录结构如下:
src hello hello.go function string.go bin hello.exe
hello.go代码
package main import ( "fmt" "function" ) func main() { fmt.Println(function.Lower("ABC")) fmt.Println(function.Upper("ABC")) }
string.go代码
package function import "strings" func Lower(str string) string { return strings.ToLower(str) } func Upper(str string) string { return strings.ToUpper(str) }
输入 go install hello,go语言会自动在工作区下搜索包function并自动编译。
这里要注意:导出的函数首字母必须大写。
【init函数】
每个包的每个go文件都可以有一个 init 函数,用于初始化,会按照编译的顺序运行。
每个init只会运行一次,如果一个包调用了另一个包,那么被调用的包的init会先被运行。