golang中的包的作用与其他语言中的模块或库是类似的,主要用于支持模块化、封装、单独编译、重用等。
一个包提供了一个独立的命名空间,大写开头的内容对外export。一个包下可以包含多个以.go
结尾的源文件。
import "example.com/common/util"
在上面的导入语句中,example.com/common/util
被称为导入路径(import path),它的源代码存在于$GOPATH/example.com/common/util
目录下。
这个包被导入以后,会绑定一个短名字,按照惯例会取最后面的那一截,就叫util
,使用util.Xxx
来访问包里面导出的内容。
由于短名字不能保证唯一,所以可以在导入时给它指定一个名字,例如:
import myUtil "example.com/common/util"
为了保持代码的严谨,如果一个包被 import 进来以后却没有使用,编译器会报错。
go工具会先给包内的文件进行排序(排序规则不清楚),然后将文件列表发给编译器,编译器按照接收到的文件顺序进行初始化。
初始化一个文件时,从包级别的变量开始,按照他们定义的顺序,如果依赖了未初始化的的变量或包,则先初始化它们再继续。
init()
函数是一个特殊的函数,如果存在的话会被自动调用,也是按照定义的顺序来调用它们。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/daguanjia11/article/details/121236207
内容来源于网络,如有侵权,请联系作者删除!