无论什么Python还是Golang当你的代码量达到一定程度时,就需要使用package来组织我们的代码文件。
在项目开发过程中组织代码的一中方式。包是多个Go文件的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt
、os
、io
等。
在目前我使用的go1.11.5中每1个.go文件都需要存放在Gopath路径下的1个文件中(包)。
package main
.go文件最开始声明这是1个main包,也就是程序的入口。
定义package
一般来说除了1个程序入口(main包)之外,在Go项目中其他都是我们程序开发人员自由定义的(工具包),以便调用。
如果是工具包必定被其他包调用,如果想要被其他包调用工具包中的 标识符(变量名、函数名、struct名、interface名)一定要大写!
1个文件夹就是1个package,一般情况下package中的.go文件一般会和package同名。
programmer.go
package devlepment import "fmt" //Programer 大写才能被外部其他包调用 func Programer(name string) { fmt.Printf(` I‘m %s a programmer work in devlepment department I interest in programing.in my free time I like seing some Science fiction films ranther than porn. `, name) }
init函数
包中的init函数在调用该包时自动执行
package resources import "fmt" //init:导入包时自动执行 func init(){ fmt.Println("导入resources包时自动执行") receptionist("May") } func receptionist(nam string){ fmt.Println(`Good morning.may I help you? `) }
init()函数执行顺序
Go语言包会从main
包开始检查其导入的所有包,每个包中又可能导入了其他的包。Go编译器由此构建出一个树状的包引用关系,再根据引用顺序决定编译顺序,依次编译这些包的代码。
在运行时,被最后导入的包会最先初始化并调用其init()
函数, 如下图示:
导入package
调用Go里面的包需要从Go project的src目录下的文件夹开始。
package main import ( //匿名调用包:只调用执行包中init函数中的代码,不使用(pymysql) _ "hello/package_practice/resources" //别名:包所在的路径 devlepment "hello/package_practice/devlepment" sales "hello/package_practice/sales" finnace "hello/package_practice/finance" ) func main(){ devlepment.Programer("Sam") finnace.Contant("Sally") sales.Salesman("Todd") }
原文:https://www.cnblogs.com/sss4/p/12695602.html