以下关于 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
从包目录中的命令行-ed。但是,go 将拒绝安装与其内置包目录名称相同的目录。例如,你不能安装一个字符串目录,因为 go 已经有一个用于内置包“strings”的字符串目录。但是,用户可以通过创建 my_strings 目录并在其中放置一个文件来将函数附加到 strings 包中,而无需更改内置的 strings 文件夹package strings
。现在,import my_strings
将加载使用strings.Function_name
.
总之,import
关键字用于从给定目录加载文件。并且关键字package
创建一个命名空间以从该文件外部访问大写函数。
我是否正确理解了以上所有内容?
相关分类