<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 目錄結構 ### 目錄結構 bin 存放編譯后生成的可執行文件 pkg 存放編譯后生成的歸檔文件 src 存放源碼文件 ### 內置類型 slice map chan 屬于引用類型(指針類型) ### 內置函數 init函數 用于包的初始化 每個包可以擁有多個init函數 ### init函數和main函數比較 相同點:定義時不能有任何的參數和返回值 且go自動調用 不同點:init可以應用于任意包中 且可以重復定義多個 main函數只能用于main包中 且只能定義一個 ### fmt.printin 和print區別 printin 輸出控制臺自帶換行 print 不帶換行 ``` <pre class="calibre14">``` 這樣,一個使用Go包管理方式創建項目的小例子就完成了。 問題一:依賴的包下載到哪里了?還在<span class="token5">GOPATH</span>里嗎? 不在。 使用Go的包管理方式,依賴的第三方包被下載到了$<span class="token5">GOPATH</span><span class="token">/</span>pkg<span class="token">/</span>mod路徑下。 問題二: 依賴包的版本是怎么控制的? 在上一個問題里,可以看到最終下載在$<span class="token5">GOPATH</span><span class="token">/</span>pkg<span class="token">/</span>mod 下的包中最后會有一個版本號 v1<span class="token1">.</span><span class="token5">0.5</span>,也就是說,$<span class="token5">GOPATH</span><span class="token">/</span>pkg<span class="token">/</span>mod里可以保存相同包的不同版本。 版本是在go<span class="token1">.</span>mod中指定的。如果,在go<span class="token1">.</span>mod中沒有指定,go命令會自動下載代碼中的依賴的最新版本,本例就是自動下載最新的版本。如果,在go<span class="token1">.</span>mod用require語句指定包和版本 ,go命令會根據指定的路徑和版本下載包, 指定版本時可以用latest,這樣它會自動下載指定包的最新版本; 問題三: 可以把項目放在$<span class="token5">GOPATH</span><span class="token">/</span>src下嗎? 可以。但是go會根據<span class="token5">GO111MODULE</span>的值而采取不同的處理方式,默認情況下,<span class="token5">GO111MODULE</span><span class="token">=</span>auto 自動模式 <span class="token1">[</span><span class="token5">1.</span>auto<span class="token1">]</span><span class="token1">(</span>https<span class="token1">:</span><span class="token">/</span><span class="token">/</span>link<span class="token1">.</span>zhihu<span class="token1">.</span>com<span class="token">/</span><span class="token">?</span>target<span class="token">=</span>http<span class="token">%</span><span class="token5">3</span>A<span class="token6">//1.auto)自動模式下,項目在$GOPATH/src里會使用$GOPATH/src的依賴包,在$GOPATH/src外,就使用go.mod 里 require的包</span> <span class="token5">2.</span>on 開啟模式,<span class="token5">1.12</span>后,無論在$<span class="token5">GOPATH</span><span class="token">/</span>src里還是在外面,都會使用go<span class="token1">.</span>mod 里 require的包 <span class="token1">[</span><span class="token5">3.</span>off<span class="token1">]</span><span class="token1">(</span>https<span class="token1">:</span><span class="token">/</span><span class="token">/</span>link<span class="token1">.</span>zhihu<span class="token1">.</span>com<span class="token">/</span><span class="token">?</span>target<span class="token">=</span>http<span class="token">%</span><span class="token5">3</span>A<span class="token6">//3.off)關閉模式,就是老規矩。</span> 問題三: 依賴包中的地址失效了怎么辦?比如<span class="token1">[</span>golang<span class="token1">.</span>org<span class="token">/</span>x<span class="token">/</span>…<span class="token1">]</span><span class="token1">(</span>https<span class="token1">:</span><span class="token">/</span><span class="token">/</span>link<span class="token1">.</span>zhihu<span class="token1">.</span>com<span class="token">/</span><span class="token">?</span>target<span class="token">=</span>http<span class="token">%</span><span class="token5">3</span>A<span class="token6">//golang.org/x/%25E2%2580%25A6)下的包都無法下載怎么辦?</span> 在go快速發展的過程中,有一些依賴包地址變更了。以前的做法: <span class="token5">1.</span>修改源碼,用新路徑替換<span class="token2">import</span>的地址 <span class="token5">2.</span>git clone 或 go <span class="token2">get</span> 新包后,copy到$<span class="token5">GOPATH</span><span class="token">/</span>src里舊的路徑下 無論什么方法,都不便于維護,特別是多人協同開發時。 使用go<span class="token1">.</span>mod就簡單了,在go<span class="token1">.</span>mod文件里用 replace 替換包,例如 replace<span class="token1">[</span>golang<span class="token1">.</span>org<span class="token">/</span>x<span class="token">/</span>text<span class="token1">]</span><span class="token1">(</span>https<span class="token1">:</span><span class="token">/</span><span class="token">/</span>link<span class="token1">.</span>zhihu<span class="token1">.</span>com<span class="token">/</span><span class="token">?</span>target<span class="token">=</span>http<span class="token">%</span><span class="token5">3</span>A<span class="token6">//golang.org/x/text)\=>[golang/text](https://link.zhihu.com/?target=http%3A//github.com/golang/text)latest</span> 這樣,go會用<span class="token1">[</span>github<span class="token1">.</span>com<span class="token">/</span>golang<span class="token">/</span>text<span class="token1">]</span><span class="token1">(</span>https<span class="token1">:</span><span class="token">/</span><span class="token">/</span>link<span class="token1">.</span>zhihu<span class="token1">.</span>com<span class="token">/</span><span class="token">?</span>target<span class="token">=</span>http<span class="token">%</span><span class="token5">3</span>A<span class="token6">//github.com/golang/text)[替代golang.org/x/text,原理就是下載github.com/golang/text](https://link.zhihu.com/?target=http%3A//%25E6%259B%25BF%25E4%25BB%25A3golang.org/x/text%25EF%25BC%258C%25E5%258E%259F%25E7%2590%2586%25E5%25B0%25B1%25E6%2598%25AF%25E4%25B8%258B%25E8%25BD%25BDgithub.com/golang/text)的最新版本到 $GOPATH/pkg/mod/golang.org/x/text下。</span> 問題四: init生成的go<span class="token1">.</span>mod的模塊名稱有什么用? 本例里,用 go mod init hello 生成的go<span class="token1">.</span>mod文件里的第一行會申明module hello 因為我們的項目已經不在$<span class="token5">GOPATH</span><span class="token">/</span>src里了,那么引用自己怎么辦?就用模塊名<span class="token">+</span>路徑。 例如,在項目下新建目錄 utils,創建一個tools<span class="token1">.</span>go文件<span class="token1">:</span> <span class="token2">package</span> utils <span class="token2">import</span> “fmt” func <span class="token3">PrintText</span><span class="token1">(</span>text string<span class="token1">)</span> <span class="token1">{</span> fmt<span class="token1">.</span><span class="token3">Println</span><span class="token1">(</span>text<span class="token1">)</span> <span class="token1">}</span> 在根目錄下的hello<span class="token1">.</span>go文件就可以 <span class="token2">import</span> “hello<span class="token">/</span>utils” 引用utils <span class="token2">package</span> main <span class="token2">import</span> <span class="token1">(</span> <span class="token4">"hello/utils"</span> <span class="token4">"[astaxie/beego](https://link.zhihu.com/?target=http%3A//github.com/astaxie/beego)"</span> <span class="token1">)</span> func <span class="token3">main</span><span class="token1">(</span><span class="token1">)</span> <span class="token1">{</span> utils<span class="token1">.</span><span class="token3">PrintText</span><span class="token1">(</span><span class="token4">"Hi"</span><span class="token1">)</span> <span class="token1">[</span>beego<span class="token1">.</span>Run<span class="token1">]</span><span class="token1">(</span>https<span class="token1">:</span><span class="token">/</span><span class="token">/</span>link<span class="token1">.</span>zhihu<span class="token1">.</span>com<span class="token">/</span><span class="token">?</span>target<span class="token">=</span>http<span class="token">%</span><span class="token5">3</span>A<span class="token6">//beego.Run)()</span> <span class="token1">}</span> ``` ```
                  <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>

                              哎呀哎呀视频在线观看