以下關於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