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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### defer常見案例 #### 案例一 ~~~go func deferFuncParameter() { var aInt = 1 defer fmt.Println(aInt) aInt = 2 return } ~~~ 參考答案: 輸出1。延遲函數fmt.Println(aInt)的參數在defer語句出現時就已經確定了,所以無論后面如何修改aInt變量都不會影響延遲函數 #### 案例二 ~~~go func printArray(array *[3]int) { for i := range array { fmt.Println(array[i]) } } func deferFuncParameter() { var aArray = [3]int{1, 2, 3} defer printArray(&aArray) aArray[0] = 10 return } func main() { deferFuncParameter() } ~~~ 參考答案: 輸出10、2、3三個值。延遲函數printArray()的參數在defer語句出現時就已經確定了,即數組的地址,由于延遲函數執行時機是在return語句之前,所以對數組的最終修改值會被打印出來 #### 案例三 ~~~go func deferFuncReturn() (result int) { i := 1 defer func() { result++ }() return i } ~~~ 參考答案: 函數輸出2。函數的return語句并不是原子的,實際執行分為設置返回值–>ret,defer語句實際執行在返回前,即擁有defer的函數返回過程是:設置返回值–>執行defer–>ret。所以return語句先把result設置為i的值,即1,defer語句中又把result遞增1,所以最終返回2
                  <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>

                              哎呀哎呀视频在线观看