go 學習筆記(1)--package


 

 

 

引入包有以下幾種方式:

1. 最簡單的方式引入一個包的方式是直接引入包,例如:

    import "fmt"

    import "os"

2. 也可以通過下面的方式將包一塊引入,並寫在括號內:

    import (

      "fmt"

      "os"

    )

通過上面的方式,可以引入系統包或第三方的包,下面重點介紹如何引入自定義的包和函數:

 一般我們將主程序放在src的main文件夾下(主程序中包含main函數,並將主程序的包名寫為package main),將其他模塊放在相應的文件夾下,例如下圖所示

   

主函數在main.go文件中,主函數名也可以為其他,但必須包含main函數。在Go編程中,怎么引入自己編寫的模塊呢,例如在main.go中如何調用add.go、subtract.go或者是multiply.go中的文件。

add.go與subtract.go在cal文件夾下,所以這兩個程序的包名為cal(package cal),multiply.go在multi文件夾下,所以程序的包名為multi(package multi)。如果main函數要調用add.go或者subtract.go中的函數,必須要引入包"cal"(import "cal")。要調用multiply.go中的函數,那就要引入包"multi",如果我們在程序中直接寫import "multi",編譯器會提示我們can not find package "multi"。因為我們的"multi"包在包"cal"下,所以我們要把包名寫完整"cal/multi",下面就可以調用各個文件中的函數了。

Go中如果函數名的首字母大寫,表示該函數是公有的,可以被其他程序調用,如果首字母小寫,該函數就是是私有的,因此我們只能調用add.go、subtract.go或者multiply.go中的公有函數。具體調用如下圖:

最后注意:文件名可以和該包名不一致,但文件中使用的包名必須要和該包名一致。

包的命名

go語言的包的命名,遵循簡潔、小寫、和go文件所在目錄同名的原則,這樣就便於我們引用,書寫以及快速定位查找。對於在企業當中開發的程序而言,我們一般采用域名作為頂級包名的方式,這樣就不用擔心和其他開發者包名重復的問題了,比如公司的域名是`www.bboyHan.com`,那么開發的go程序都以`bboyHan.com`作為全路徑中的最頂層部分,導入開發的工具包則可以寫為:

package main
 
import "bboyHan.com/utils"

 

Main

當把一個go文件的包名聲明為main時,就等於告訴go編譯程序,這是一個可執行程序,那么go編譯程序就會嘗試把它編譯為一個二進制的可執行文件。如果沒有這個函數,程序就無法執行。

Go編譯器又是如何去尋找各個文件、包之間的依賴關系而構建程序的呢?

環境變量GOROOT和GOPATH兩個概念,這是兩個定義路徑的環境變量,GOROOT是安裝Go的路徑,比如 C:\go ;GOPATH是我們自己定義的開發者個人的工作空間,比如C:\workspace\src\bbboyHan。

編譯器會使用我們設置的這兩個路徑,再加上import導入的相對全路徑來查找磁盤上的包,比如我們導入的fmt包,編譯器最終找到的是 C:\go\fmt 這個位置。對於包的查找,是有優先級的,編譯器會優先在GOROOT里搜索,其次是GOPATH,一旦找到,就會馬上停止搜索。如果最終都沒找到,就會報編譯異常了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM