package和go文件的关系
什么是 package?
- package 是 Go 的代码组织单元,用于将功能相关的代码分组到一起。
- 每个 Go 文件都属于某个 package,通过
package
声明指定。 - 一个 package 下可以包含多个 Go 文件,它们共享该 package 的作用域和功能。
package 和 Go 文件的关系
一个 package 对应多个 Go 文件
- 一个 package 可以由多个 Go 文件组成,这些文件共享同一个 package 的作用域。
- 在同一个 package 中,所有的全局变量、函数、类型等都可以在其他文件中直接访问,无需导入。
每个 Go 文件只能属于一个 package
- 一个 Go 文件的代码只能声明一个
package
,不能跨 package。
Go 文件之间的组织
- 所有文件在一个目录下,并声明相同的
package
,即可组成一个 package。 - 通过这种方式,可以将功能相关的代码分散在多个文件中,便于维护和阅读。
示例:一个 package 多个 Go 文件
目录结构:
mathutil/
├── add.go
├── sub.go
├── mul.go
add.go
:
package mathutil
func Add(a, b int) int {
return a + b
}
sub.go
:
package mathutil
func Sub(a, b int) int {
return a - b
}
mul.go
:
package mathutil
func Mul(a, b int) int {
return a * b
}
关键点:
- 这三个文件都声明了
package mathutil
,表示它们属于同一个 package。 - 其他代码可以通过导入
mathutil
package,使用Add
,Sub
, 和Mul
函数。
特殊的 package main
package main
是程序的入口:包含func main()
的文件必须声明为package main
。- 这是 Go 的规范,用于表示可执行程序(而非库 package)。