Golang 包管理 package
介绍包管理
- 包的定义与意义:
包用于组织 Go 源代码,提供了更好的可重用性与可读性
- 入口文件以及main函数:
- main函数:
- 所有可执行的文件,都必须有main函数,main函数是这个文件的执行入口;
- 文件第一行的 package name:
- 这行代码指定了该文件属于那一个包;应该写在每一源文件的第一行;
- 示例:
// run.go package main import ( "fmt" "mysite/mypack" ) func main() { fmt.Println("This is my main function") mypack.MyPack() } // start.go package mypack import ( "fmt" ) func MyPack() { fmt.Println("这是我的第一自定义包") }
自定义包
- 创建自定义的包:
- 包实际就是存放 .go 类型的文件夹,在每个文件中,首行代码必须声明为 某个包的文件;
- 注意路径的层级关系;
- 注意环境变量的设置;
- 导入自定义的包:
- 相对路径导入包:
- 只能用相对路径导入包;
- 绝对路径导入包:
- 会报错:
package main import ( "fmt" // "mysite/mypack" "E:/Go语言/studt/src/mysite/mypack" ) func main() { fmt.Println("This is my main function") mypack.MyPack() } // 报错信息: run.go:6:2: invalid import path: "E:/Go语言/studt/src/mysite/mypack"
- 导入包中变量,函数,类等等;
在 Go 中,任何以大写字母开头的变量或者函数都是被导出的名字。
其它包只能访问被导出的函数和变量。
也就是说,想要被外界调用,必须首字母大写;
小写则不允许被调用
- 调用小写的变量的异常报错信息:
cannot refer to unexported name rectangle.area
- 空白符 _ :
导入了包,却不在代码中使用它,这在 Go 中是非法的;
然而,在程序开发的活跃阶段,又常常会先导入包,
而暂不使用它。遇到这种情况就可以使用空白标识符 _
- 使用空白标识符避免报错的两种示例:
- 使用错误屏蔽器:
package main import ( "geometry/rectangle" ) var _ = rectangle.Area // 错误屏蔽器 func main() { }
- 在import 中使用空白符:
package main import ( _ "geometry/rectangle" ) func main() { }
init函数
- 所有的包都可以包含一个init函数;
- init 函数不应该有任何返回值类型和参数;
- init函数不能被外界调用;
- init 函数可用于执行初始化任务,也可用于在开始执行之前验证程序的正确性
- 执行顺序:
- 先加载 导入的包中的 init方法;
- 在加载 当前main包中 包级别变量;
- 再加载 main包中的 init方法;
- 最后根据main函数中的执行顺序 加载变量以及包的函数等等;