【Golang】學習筆記2 -- 代碼目錄結構、應用編譯、自訂包及遠程包的引用

來源:互聯網
上載者:User

前言

前面一篇文章我們介紹了怎麼在windows下安裝配置GO開發環境。這一篇我們來介紹代碼Golang的目錄結構、應用編譯、自訂包及遠程包的引用。

代碼目錄結構

上一篇末尾我們設定的GOPATH下的src目錄就是我們接下來開發程式的主要目錄,所有的源碼都是放在這個目錄下面,一般的做法就是一個目錄一個項目

例如: %GOPATH%/src/mymath 這個目錄就代表mymath這個應用程式套件或者可執行應用(根據packagemain還是其他來決定,如果是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下面儲存的是應用原始碼。

歡迎園子的大大們指正錯誤,共同進步。如果您覺得文章對您有協助,可以點擊右下角【推薦】一下。您的鼓勵是作者堅持寫作的最大動力!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.