【Golang系列】-包
2022-03-20
包
包可以区分命令空间,(一个文件夹中不能有两个同名文件)也可以更好的管理项目,go中创建一个包,一般是创建一个文件夹,在该文件夹下面的go文件中,使用package关键字声明包名称,文件夹名称和包名称相同,并且,同一个文件下面只有一个包
创建包:
创建一个名为dao的文件夹
创建一个dao.go文件
在该文件中声明包
dao.go
package dao
import "fmt"
func Test1() {
fmt.Println("Test package")
}
导入包:
要使用某个包下面的变量或者方法,需要导入该包,导入包时,要导入从gopath开始的包路径
package main
import "dao"
func main() {
dao.Test1()
}
包的注意事项:
一个文件夹下只能有一个package
import后面其实是gopath开始的相对路径,包括最后一段,但由于一个目录只有一个package,所以一个import路径就等于是import这个路径下的包
这里直接包含go文件,如果有子目录,那么子目录的父目录是完全两个包。
比如你实现了一个计算器package,名叫calc,位于calc目录下;但又想给别人一个使用范例,于是在calc下可以建个example子目录(calc/example/),这个子目录里有个example.go(calc/example/example.go)。此时,example.go可以是main包,里面还可以有个main函数。
一个package的文件不能在多个文件夹下
如果多个文件夹下有重名的package,他们彼此无关
如果一个go文件需要同时使用不同目录下的同名package,需要在import这些目录时为每个目录指定一个package的别名
包管理工具go module
介绍:
是1.11新家的特性,用来管理模块中的包的依赖关系
go mod使用方法
初始化模块go mod init <项目模块名称>
依赖关系处理 根据go.mod文件 go mod tidy
将依赖包复制到项目下的 vendor目录。 go mod vendor 如果包被屏蔽(墙),可以使用这个命令,随后使用go build -mod=vendor编译
显示依赖关系 go list -m all
显示详细依赖关系 go list -m -json all
下载依赖 go mod download [path@version] [path@version]是非必写的