前言
前面一篇文章我們介紹了怎麼在windows下安裝配置GO開發環境。這一篇我們來介紹代碼Golang的目錄結構、應用編譯、自訂包及遠程包的引用。
代碼目錄結構
上一篇末尾我們設定的GOPATH下的src目錄就是我們接下來開發程式的主要目錄,所有的源碼都是放在這個目錄下面,一般的做法就是一個目錄一個項目。
例如: %GOPATH%/src/mymath 這個目錄就代表mymath這個應用程式套件或者可執行應用(根據package是main還是其他來決定,如果是main就是可執行應用,非main就是應用程式套件。)
所以當我們建立應用或者一個程式碼封裝時都是在src目錄下建立一個檔案夾,檔案夾名稱一般是程式碼封裝名稱。當然建立多級目錄也是可以的,例如在src下面建立了目錄%GOPATH%/src/github.com/HeBinz/OpTestlink 那麼這個包路徑就是"github.com/HeBinz/OpTestlink",即從src目錄開始算的目錄層級。
下面我就以mymath為例來講述如何編寫應用程式套件,執行如下代碼,切換到D盤(我們之前設定的GOPATH所在的盤),然後切換到GOPATH下的src目錄,建立mymath檔案夾:
D:cd %GOPATH%/srcmkdir mymath
建立檔案sqrt.go,添加如下內容:
package mymathfunc Sqrt(x float64) float64 { z := 0.0 for i := 0; i < 1000; i++ { z -= (z*z - x) / (2 * x) } return z}
這樣我的應用程式包目錄和代碼已經建立完畢,注意:一般建議package的名稱和目錄名保持一致。
自訂包安裝
上面我們已經建立了自己的應用程式套件,如何進行編譯安裝呢?有兩種方式可以進行安裝
- 進入對應的應用程式套件目錄,然後執行go install,就可以安裝了
- 在任意的目錄執行如下代碼go install mymath
我們執行安裝之後,可以進入如下目錄(\({GOOS}_\){GOARCH}和作業系統有關,像博主的windows 64位為windows_amd64)
cd $GOPATH/pkg/${GOOS}_${GOARCH}
可以看到如下mymath.a檔案
這個.a檔案就是應用程式套件,那麼我們如何進行調用呢?
自訂包調用
接下來我們建立一個可執行應用來調用這個應用程式套件,和前面的步驟一樣,我們在src目錄下建立一個目錄mathapp
cd %GOPATH%/srcmkdir mathapp
然後建立一個main.go檔案,添加下面的內容:
package mainimport ( "mymath" "fmt")func main() { fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))}
可以看到我們這次定義的package是main,import裡面調用的包是mymath,也就是我們前面自訂的那個包。
需要說明的是,如果是多級目錄,就在import裡面引入多級目錄,如果你有多個GOPATH,也是一樣,Go會自動在多個$GOPATH/src中尋找。
如何編譯我們建立的mathapp程式呢?進入該應用目錄,然後執行go build,那麼在該目錄下面會產生一個mathapp的可執行檔,在windows下預設產生的是.exe檔案。
我們執行mathapp.exe檔案,發現它輸出如下內容
Hello, world. Sqrt(2) = 1.414213562373095
遠程包
擷取遠程包
go語言有一個擷取遠程包的工具就是go get,目前go get支援多數開源社區(例如:github、googlecode、bitbucket、Launchpad)
go get github.com/astaxie/beedb
go get -u 參數可以自動更新包,而且當go get的時候會自動擷取該包依賴的其他第三方包
通過這個命令可以擷取相應的源碼,對應的開源平台採用不同的源碼控制工具,例如github採用git、googlecode採用hg,所以要想擷取這些源碼,必須先安裝相應的源碼控制工具。
通過上面擷取的代碼在我們本地的源碼相應的代碼結構如下
$GOPATH src |--github.com |-astaxie |-beedb pkg |--相應平台 |-github.com |--astaxie |beedb.a
go get本質上可以理解為首先第一步是通過源碼工具clone代碼到src下面,然後執行go install
遠程包的調用
在代碼中如何使用遠程包,很簡單的就是和使用當地套件一樣,只要在開頭import相應的路徑就可以
import "github.com/astaxie/beedb"
再次提醒:bin目錄下面存的是編譯之後可執行檔檔案,pkg下面存放的是應用程式套件,src下面儲存的是應用原始碼。
歡迎園子的大大們指正錯誤,共同進步。如果您覺得文章對您有協助,可以點擊右下角【推薦】一下。您的鼓勵是作者堅持寫作的最大動力!