package:
package是最基本的分发单位和工程管理中依赖关系的体现;
每个go语言源代码文件开头,都拥有一个package声明,表示源码文件所属代码包;
要生成go语言可执行程序,必须要有main的package包、且必须在该包下有mai()函数;
同一路径下只能存在一个package,一个package可以拆成多个源文件组成;
import:
import可以导入源代码文件所依赖的oackage包
不得导入源代码文件中没有用到的package,否则go语言编译器会报编译错误
import语法格式主要有两种:
第一种:
import "package1"
import "package2"
import "package3"
第二种:
import ("package1","package2","package3")
import原理:
如果一个main导入其他包,包将被顺序导入
如果导入的包中依赖其他包(包B),会首先导入B包,然后初始化B包中常量和变量,最后如果B包中有init,会自动执行init()
所有包导入完成后,才会对main中常量和变量进行初始化,然后执行main中的init函数(如果存在),最后执行main函数
如果一个包被导入多次,则该包只会被导入一次
import别名,".","_"
别名操作的含义是:将导入的包命令为另一个容易记忆的别名;
点(.)操作的含义是:点(.)标识的包导入后,调用该包中函数时,可以省略前缀包名;
下划线(_)操作的含义是:导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数,使用下划线(_)操作往往是为了注册包里的引擎,让外部可以方便的使用
package main
//别名,重新命名fmt包
import igo "fmt"
func init(){
igo.Print("main函数执行之前")
}
func main(){
igo.print("hello go")
}
package main
//用.来别名,可以省略
import (. "fmt")
func main(){
Print("hello go")
}
package main
import (_ "igo/show")
func main(){
//此处会报错,下划线不能直接使用包,默认直接执行show中的init函数
//show.Show()
}
//show中
package show
import "fmt"
func init(){
fmt.Print("hello show")
}
func show(){
}