同樣先看幾個(gè)文件:
// main.go
package main
import (
"./subpack" //這里是目錄相對(duì)路徑,不是包名
"fmt"
)
func main(){
fmt.Println(subpack.sub()) //這里的requests才是./requests目錄中的package名稱
function() //因?yàn)槭窃谕粋€(gè)目錄下,所以可以直接使用這個(gè)文件中的方法和變量等...
//但是編譯或運(yùn)行的時(shí)候要這樣:go build,而不用指出文件名go build main.go
fmt.Println(subpack.VERSION)
}
// function.go
package main
import "fmt"
func function(){
fmt.Println("this main package, function func")
}
// subpack/subpack.go
package subpack
import (
"fmt"
)
var VERSION string = "0.6"
func Sub() string { //注意這里的首字母大寫
fmt.Println("subpack_name sub func")
return "subpack_name sub func"
}
在golang 里面一個(gè)目錄為一個(gè)package, 一個(gè)package級(jí)別的func, type, 變量, 常量, 這個(gè)package下的所有文件里的代碼都可以隨意訪問(wèn), 也不需要首字母大寫???code>function.go中的function函數(shù),由于function.go和main.go在同一個(gè)目錄,所以main.go可以直接使用function.go中的這個(gè)function函數(shù)(main.go第11行直接使用了function)。
引用其它目錄中的文件需要import這個(gè)文件所在的文件夾相對(duì)位置,然后在代碼中用這個(gè)文件中的package包名作為使用依據(jù)??吹谌未a,subpack文件夾和main.go在同一個(gè)目錄,subpack文件夾中有個(gè)subpack.go文件,所以main.go要import ./subpack這個(gè)文件夾,這個(gè)subpack.go文件的package是subpack,并且Sub方法是首字母大寫,所以main.go中可以用subpack.Sub()方法。
PS:文件夾名和文件夾內(nèi)的文件package名稱可以不一致,但是那樣不符合語(yǔ)言規(guī)范,并且會(huì)很雜亂。
還是python的import簡(jiǎn)潔、簡(jiǎn)單?。?!golang一堆槽點(diǎn)?。?!