Go语言里的包(package)可以理解为目录,任意一个.go文件都必须属于某个包。
Go语言的包名有且只有一层,包名通常和硬盘目录名保持一致(并非强制性规则,只是名称保持一致方便管理)。
一个包下面可以有多个.go文件,但是无论一个包下面有多少.go文件,在Go语言的管理层面一个包只有一个文件,而这个文件就是这些.go文件的集合。如果在同一个包的不同两个.go文件里定义同名变量或函数,就会报redeclared的错误。
每个.go文件里定义的变量、常量、函数、结构体都可以设定访问权限,但不是通过public、private这些关键字,而是通过其名称的首字母大小写来设定,若首字母小写则只能在本包中访问,若首字母大写则可以被其它包访问。如在util包中定义了GetTimeStamp()函数,由于函数名首字母为大写,所以其它包也可以调用该函数(前提是import了util包),调用格式为:util.GetTimeStamp(),如果是本包调用则不需要加“util.”。