使用包的原因:
1.不可能把所有的不同业务功能的函数都放在一个源文件中,这样不便于管理。通常的做法是:我们会把具有相同一些功能和业务的维度的函数,分门别类的放在不同的源文件中。
2.不同的包名,可以解决两个函数同名的问题,因为在同一个函数中是不能定义两个相同的名字的函数的。这个时候也可以使用包来区分函数。
提前准备:我在 go-helloworld/com/cosy/util/文件夹下,建了一个go文件——myUtil.go,并在其中写了一个test 函数。使用此test函数的代码如下:
package main
import (
"fmt"
"go-helloworld/com/cosy/util"
)
func main() {
fmt.Println("")
util.Test()
}
使用时的注意事项:
- 包的声明 用 package 关键字进行声明。建议:包的声明应该和所在的文件夹同名,虽然可以不一样,包和目录文件名 相同。
- main包是程序的入口包,一般main函数会放在main包下。我的理解就是Go语言的运行机制它会从main包中找程序的入口。否则不能编译,不能编译就无法生成 .exe 可执行文件。
- 声明包语法 package 包名 和java一样。
- 引入包的语法是 import "包路径" 即文件夹的路径 , 包名是从 环境变量 $GOPATH/scr/后开始计算的,使用 / 进行路径的分隔。
// 包名是从 环境变量 $GOPATH/scr/后开始计算的,使用 / 进行路径的分隔。 import ( "fmt" "go-helloworld/com/cosy/util" )
- 在函数调用的时候,要定位到所在的包,语法为: 包名.函数() 进行调用。
- 首字母大写的才可以被其他包所访问。
- 从事项1可知:一个目录下的文件,包声明理论上都是文件夹目录的名称,也就是说,同一目录下不能有重复的函数。亲测,如果同一个目录下,2个文件中都有一个test 方法将有编译错误提示。
- 一个目录下的同级文件 归属于同一个包。同一个目录同级的文件,一个 package aaa,另一个package bbb 则是不允许的。必须要相同,或者都叫 package ccc , 最佳的实践 为:package dirName。
包的本质:
在源文件层面上看,包就是文件夹;而站到在程序层面上看,所有使用相同 package 包名的源文件组成的某个维度的代码模块。