以下关于Go包的断言是否准确?以下关于Go包的断言是否准确?
import "package_name"
从所谓的程序包目录中,如果在$ GOPATH,保存用户去目录,或在标准去安装目录树中的一个变量发现进口的所有文件。package_name目录中的文件通常会指定
package package_name
。但他们并不需要。实际上,import "package_name"
也会导入包含行package foo
的文件,如果在导入的package_name目录中找到该文件。被大写所有功能将通过在封装程序包声明中给出的名称来访问 - 例如:
package_name.Function_in_file_that_declares_package_name
或other_than_package_name.Function_in_file_that_declares_other_than_package_name
- 用户定义的包是命令行
go install
-ed从包目录内。但是,go会拒绝安装一个与其内置包目录名称完全相同的目录。例如你不能安装一个字符串目录,因为已经有内建包“字符串”的字符串目录。但是,用户可以将函数追加到字符串包中,而无需更改内置字符串文件夹,方法是创建一个my_strings目录并在其中放置一个指示package strings
的文件。现在,import my_strings
将加载用strings.Function_name
访问的额外用户定义的字符串函数。
总之,import
关键字用于从给定目录加载文件。关键字package
创建一个名称空间来从该文件外部访问大写的函数。
我是否正确理解上述所有内容?
看起来有点像你认为Go包和import语句有点像C++中的include指令和namespace关键字(提示:他们没有)。与C++相似,而是阅读[spec](http://golang.org/ref/spec) – fuz