以下关于 Go 包的断言是否准确?
import "package_name"
从名为 package_name 的目录中导入所有文件,假设在 $GOPATH(一个保存用户 go 目录的变量)或标准 go 安装目录树中找到。package_name 目录中的文件通常会声明
package package_name
. 但他们不是必须的。实际上,如果在导入的 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
从包目录中命令行编辑的。但是,go 将拒绝安装与其内置包目录同名的目录。例如,您不能安装字符串目录,因为 go 已经有一个用于内置包“字符串”的字符串目录。但是,用户可以通过创建一个 my_strings 目录并在其中放置一个文件来将函数附加到字符串包而不改变内置的字符串文件夹package strings
。现在,import my_strings
将加载使用strings.Function_name
.
总之,import
关键字用于从给定目录加载文件。并且该关键字package
创建了一个命名空间以从该文件外部访问大写函数。
我是否正确理解了上述所有内容?