<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 包 每個包都對應一個獨立的名字空間。 每個源文件都是以包的聲明語句開始,用來指明包的名字。當包被導入的時候,包內的成員將通過類似tempconv.CToF的形式訪問。而包級別的名字,例如在一個文件聲明的類型和常量,在同一個包的其他源文件也是可以直接訪問的,就好像所有代碼都在一個文件一樣。 ## 導入包 在Go語言程序中,每個包都有一個全局唯一的導入路徑。 除了包的導入路徑,每個包還有一個包名,包名一般是短小的名字(并不要求包名是唯一的),包名在包的聲明處指定。按照慣例,**一個包的名字和包的導入路徑的最后一個字段相同**,例如gopl.io/ch2/tempconv包的名字一般是tempconv。 導入語句將導入的包綁定到一個短小的名字,然后通過該短小的名字就可以引用包中導出的全部內容。 但是我們也可以綁定到另一個名稱,以避免名字沖突。 如果導入了一個包,但是又沒有使用該包將被當作一個編譯錯誤處理。這種強制規則可以有效減少不必要的依賴。 ## 包的初始化 包的初始化首先是解決包級變量的依賴順序,然后按照包級變量聲明出現的順序依次初始化: ~~~ var a = b + c // a 第三個初始化, 為 3 var b = f() // b 第二個初始化, 為 2, 通過調用 f (依賴c) var c = 1 // c 第一個初始化, 為 1 func f() int { return c + 1 } ~~~ 如果包中含有多個.go源文件,它們將按照發給編譯器的順序進行初始化,Go語言的構建工具首先會將.go文件根據文件名排序,然后依次調用編譯器編譯。 對于在包級別聲明的變量,如果有初始化表達式則用表達式初始化,還有一些沒有初始化表達式的,例如某些表格數據初始化并不是一個簡單的賦值過程。在這種情況下,我們可以用一個特殊的init初始化函數來簡化初始化工作。每個文件都可以包含多個init初始化函數 ~~~ func init() { /* ... */ } ~~~ 這樣的init初始化函數除了不能被調用或引用外,其他行為和普通函數類似。在每個文件中的init初始化函數,在程序開始執行時按照它們聲明的順序被自動調用。 每個包在解決依賴的前提下,以導入聲明的順序初始化,每個包只會被初始化一次。因此,如果一個p包導入了q包,那么在p包初始化的時候可以認為q包必然已經初始化過了。初始化工作是自下而上進行的,main包最后被初始化。以這種方式,**可以確保在main函數執行之前,所有依賴的包都已經完成初始化工作了**。
                  <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>

                              哎呀哎呀视频在线观看