[golang note] 工程組織

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

golang項目目錄結構

       <golang_proj>

                 ├─README
                 ├─AUTHORS
                 ├─<bin>
                 ├─<pkg>
                 ├─<src>

       golang工程不需要任何的工程檔案,一個完整的工程通常會在項目根目錄下放置上面所示的檔案或目錄。它們的作用如下:

        README : 簡單介紹本項目的目標和主要注意事項,通常第一次使用時應該先閱讀此文檔。

        LICENSE  : 本工程採用的分發協議,所有開源項目通常都擁有該文檔。

        src           : src目錄用於存放所有的原始碼。

        pkg         : pkg目錄用於存放編譯後的包檔案,無需手動建立。

        bin          : bin目錄用於存放編譯後的可執行檔,無需手動建立。

• src目錄

        目錄src用於包含所有的原始碼,是go tool一個強制的規則。

        構建過程中,go tool對包結構的理解完全依賴於src下面的目錄結構

        go get命令下載的第三方源碼將放置於GOPATH環境變數中第一個路徑之中。

       以《golang之package》中提及的calc執行個體來說明的話,其目錄結構一開始如下:

       <calcproj>
           ├─<src>
                   ├─<calc>
                            ├─calc.go
                   ├─<simplemath>
                            ├─add.go
                            ├─add_test.go
                            ├─sqrt.go
                            ├─sqrt_test.go
           ├─<bin>
           ├─<pkg>

       那麼在命令列中,我們在工程路徑下,使用go install simplemath命令對simplemath進行打包,可以在pkg目錄下找到simplemath.a檔案。

      

       

       如果我們希望simplemath.a的路徑帶有一個命名空間,即在在使用時希望以import "myns/simplemath"這樣的方式匯入,那麼需要將目錄結構調整為如下形式:

       <calcproj>
           ├─<src>
                   ├─<calc>
                            ├─calc.go
                   ├─<simplemath>

                            ├─<myns>
                                      ├─add.go
                                      ├─add_test.go
                                      ├─sqrt.go
                                      ├─sqrt_test.go
           ├─<bin>
           ├─<pkg>

       那麼在命令列中,我們在工程路徑下,使用go install myns/simplemath命令對simplemath進行打包,可以在pkg目錄下找到simplemath.a檔案。

      

       

       如果在命令列中,我們在工程路徑下,執行go install calc命令,那麼不僅可以在bin目錄下找到calc.exe可執行檔,還可以在pkg目錄下找到simplemath.a打包檔案。

      

      

      

• bin目錄

        目錄bin用於存放編譯後的可執行檔。

• pkg目錄

        目錄pkg用於存放編譯後的包檔案。

golang多重專案管理

• 方案一

       該方案就是設定多個GOPATH路徑,即將多重專案工程的路徑都加入到GOPATH中,例如設定GOPATH為形如下面路徑:

       D:\workspace\golang\calcproj;D:\workspace\golang\golearning;D:\workspace\golang\rpcclient;D:\workspace\golang\rpcserver

      

       優點:項目目錄結構清晰,乾淨,每個工程下面只擁有自己相關的檔案。

       缺點:使用類似go get的命令時,受影響的僅僅是GOPATH路徑下的第一個路徑,譬如使用go get取得第三方源碼時,取得的源碼只能下載到GOPATH路徑下的第一個路徑。

• 方案二

       該方案就是始終設定一個GOPATH路徑,多重專案都放置在該路徑下的src目錄,並按照工程劃分目錄,例如設定GOPATH為形如下面路徑:

       D:\workspace\golang

      

       優點:GOPATH只需要設定一個目錄就可以管理多個工程,也不用煩惱第三方源碼存放位置。

       缺點:這種目錄結構下工程檔案夾也是一個包名路徑,即內部工程檔案在import時候需要加上工程檔案夾名。以上述為例,protoc-gen-go在import其他包時候,需要加上基於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.