<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                go module是什么?怎么用?(附使用示例) go module 使用 go module 在 go 1.14 版本之后被推出 一、go module 使用介紹 ??go module???是Go1.11版本之后官方推出的版本管理工具,并且從Go1.13版本開始,??go module??將是Go語言默認的依賴管理工具。 1.1 GO111MODULE 要啟用??go module???支持首先要設置環境變量??GO111MODULE???,通過它可以開啟或關閉模塊支持,它有三個可選值:??off???、??on???、??auto???,默認值是??auto??。 ``` ??GO111MODULE=off???禁用模塊支持,編譯時會從??GOPATH??和??vendor??文件夾中查找包。 ??GO111MODULE=on???啟用模塊支持,編譯時會忽略??GOPATH??和??vendor??文件夾,只根據???go.mod??下載依賴,將依賴下載至??%GOPATH%/pkg/mod/???目錄下。 ??GO111MODULE=auto???,當項目在??$GOPATH/src??外且項目根目錄有??go.mod??文件時,開啟模塊支持。 ``` 簡單來說,設置??GO111MODULE=on???之后就可以使用??go module??了,以后就沒有必要在GOPATH中創建項目了,并且還能夠很好的管理項目依賴的第三方包信息。 使用 go module 管理依賴后會在項目根目錄下生成兩個文件??go.mod???和??go.sum??。 1.2 GOPROXY Go1.11之后設置GOPROXY命令為: ``` ??export GOPROXY=https:????//goproxy.cn?? ``` 1. Go1.13之后??GOPROXY???默認值為??https://proxy.golang.org,在國內是無法訪問的,所以十分建議大家設置GOPROXY,這里我推薦使用goproxy.cn。?? ``` ??go env -w GOPROXY=https:????//goproxy.cn,direct?? ``` 1. 1.3 go mod命令 常用的??go mod??命令如下: ``` ??go mod download 下載依賴的module到本地cache(默認為????$GOPATH????/pkg/mod目錄)?? ??go mod edit 編輯go.mod文件?? ??go mod graph 打印模塊依賴圖?? ??go mod init 初始化當前文件夾, 創建go.mod文件?? ??go mod tidy 增加缺少的module,刪除無用的module?? ??go mod vendor 將依賴復制到vendor下?? ??go mod verify 校驗依賴?? ??go mod why 解釋為什么需要依賴?? ``` 1.4 go.mod go.mod文件記錄了項目所有的依賴信息,其結構大致如下: ``` ??module github.com/Q1mi/studygo/blogger?? ??go 1.12?? ??require??? ??(?? ??github.com/DeanThompson/ginpprof v0.0.0-20190408063150-3be636683586?? ??github.com/gin-gonic/gin v1.4.0?? ??github.com/go-sql-driver/mysql v1.4.1?? ??github.com/jmoiron/sqlx v1.2.0?? ??github.com/satori/go.uuid v1.2.0?? ??google.golang.org/appengine v1.6.1 ????// indirect?? ??)?? ``` 其中, ??module??用來定義包名 ??require??用來定義依賴包及版本 ??indirect??表示間接引用 1.4.1 依賴的版本 go mod支持語義化版本號,比如??go get foo@v1.2.3???,也可以跟git的分支或tag,比如??go get foo@master???,當然也可以跟git提交哈希,比如??go get foo@e3702bed2??。關于依賴的版本支持以下幾種格式: ``` ??gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7?? ??gopkg.in/vmihailenco/msgpack.v2 v2.9.1?? ??gopkg.in/yaml.v2 <=v2.2.1?? ??github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e?? ??latest?? ``` 1.4.2 replace 在國內訪問golang.org/x的各個包都需要翻,你可以在go.mod中使用replace替換成github上對應的庫。 ``` ??replace (?? ??golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac?? ??golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d?? ??golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0?? ??)?? ``` 1.5 go get 在項目中執行??go get??命令可以下載依賴包,并且還可以指定下載的版本。 運行??go get -u??將會升級到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號, y是次要版本號) 運行??go get -u=patch??將會升級到最新的修訂版本 運行??go get package@version??將會升級到指定的版本號version 如果下載所有依賴可以使用??go mod download??命令 1.6 整理依賴 我們在代碼中刪除依賴代碼后,相關的依賴庫并不會在??go.mod???文件中自動移除。這種情況下我們可以使用??go mod tidy???命令更新??go.mod??中的依賴關系。 1.7 go mod edit 格式化 因為我們可以手動修改go.mod文件,所以有些時候需要格式化該文件。Go提供了一下命令: ??go mod edit -fmt?? 添加依賴項 ??go mod edit -????require????=golang.org/x/text?? 移除依賴項 如果只是想修改??go.mod???文件中的內容,那么可以運行??go mod edit -droprequire=package path???,比如要在??go.mod???中移除??golang.org/x/text??包,可以使用如下命令: ??go mod edit -droprequire=golang.org/x/text?? 關于??go mod edit???的更多用法可以通過??go help mod edit??查看。 1.8 在項目中使用go module 1.8.1 既有項目 如果需要對一個已經存在的項目啟用??go module??,可以按照以下步驟操作: 在項目目錄下執行??go mod init???,生成一個??go.mod??文件。 執行??go get???,查找并記錄當前項目的依賴,同時生成一個??go.sum??記錄每個依賴庫的版本和哈希值。 1.8.2 新項目 對于一個新創建的項目,我們可以在項目文件夾下按照以下步驟操作: 執行??go mod init 項目名???命令,在當前項目文件夾下創建一個??go.mod??文件。 手動編輯??go.mod???中的require依賴項或執行??go get??自動發現、維護依賴。 二、包和調用文件在同一項目下 例如: ``` ??moduledemo?? ??├── go.mod?? ??├── main.go?? ??└── mypackage?? ??└── mypackage.go ????// package mp 定義包名為 mp?? ``` 步驟: 1.在項目下創建一個 go.mod 文件,文件名只能為這個。 2.在 go.mod 文件中添加以下代碼 ??module moduledemo ????// 設定 moduledemo 為包根目錄名,可以隨意改變該名字,只需要導入時一致就好?? ??go 1.14 ????// 表明版本?? 1. 2. 3.導入想要的包文件 ??import ????"moduledemo/mypackage"??? ??// 這里是導入包目錄下的包文件名?? 1. 4.使用包文件 ??mp.MyPackage() ????// 使用包中的 MyPackage() 函數?? 1. 三、包和被調用文件不在同一個項目下 例如: ??├── moduledemo?? ??│ ├── go.mod?? ??│ └── main.go?? ??└── mypackage?? ??├── go.mod?? ??└── mypackage.go ????// package mp 定義包名為 mp?? 步驟 1.在 mypackage 下面創建 go.mod 文件,并添加以下代碼 ??module mypackage?? ??go 1.14?? 2.在 moduledemo 下面創建 go.mod 文件,并添加以下代碼 ??module moduledemo?? ??go 1.14?? ??require??? ??mypackage v0.0.0 ????// 這個會在你執行 go build 之后自動在該文件添加?? ??replace mypackage => ../mypackage ????// 指定需要的包目錄去后面這個路徑中尋找?? 3.導入和使用 ??import ????"mypackage"??? ??// 因為該包目錄本身就是包文件所以無需添加下一級路徑?? ??mp.MyPackage() ????// 使用包中的 MyPackage() 函數
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看