<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之旅 廣告
                # **程序流程控制** 在程序中,程序運行的流程控制決定程序是如何執行的,是我們必須掌握的,主要有三大流程控 制語句。 1) 順序控制 2) 分支控制 3) 循環控制 #### **順序控制** 程序從上到下逐行地執行,中間沒有任何判斷和跳轉。 一個案例說明,必須下面的代碼中,沒有判斷,也沒有跳轉.因此程序按照默認的流程執行,即順 序控制。 分支控制就是讓程序有選擇執行。有下面三種形 **(if后面沒有()當然不推薦使用寫了也不會報錯,else不能和前后的大括號在不同行會報錯)** 1) 單分支 ![](https://img.kancloud.cn/94/d8/94d8a4db50eb74d7810eb43ed7dbb39e_764x235.png) 2) 雙分支 ![](https://img.kancloud.cn/af/f7/aff7216cda5eb1c481621edb06b3fb2c_940x199.png) 3) 多分支 ![](https://img.kancloud.cn/b4/16/b41644049c517cf21ed262b2920aa135_948x335.png) **注意在go中條件語句中不能有賦值語句其他語言可以(例如 php)但是go中會編譯錯誤** **if語句前面可以有一個語句例如** ``` if err := recover; err != nil { fmt.Println("錯誤處理", err) } ``` ## **switch 分支控制** 1) switch 的執行的流程是,先執行表達式,得到值,然后和 case 的表達式進行比較,如果相等, 就匹配到,然后執行對應的 case 的語句塊,然后退出 switch 控制。 2) 如果 switch 的表達式的值沒有和任何的 case 的表達式匹配成功,則執行 default 的語句塊。執行尚硅谷 Go 語言課程 后退出 switch 的控制. 3) golang 的 case 后的表達式可以有多個,使用 逗號 間隔. 4) golang 中的 case 語句塊不需要寫 break , 因為默認會有,即在默認情況下,當程序執行完 case 語 句塊后,就直接退出該 switch 控制結構。 ![](https://img.kancloud.cn/45/a2/45a2e75f7a77041210249a61daf89121_989x429.png) 注意事項: 1) case/switch 后是一個表達式( 即:常量值、變量、一個有返回值的函數等都可以) 2) case 后的各個表達式的值的數據類型,必須和 switch 的表達式數據類型一致 3) case 后面可以帶多個表達式,使用逗號間隔。比如 case 表達式 1, 表達式 2 ... 4) case 后面的表達式如果是常量值(字面量),則要求不能重復 5) case 后面不需要帶 break , 程序匹配到一個 case 后就會執行對應的代碼塊,然后退出 switch,如 果一個都匹配不到,則執行 defaul 6) default 語句不是必須的. 7) switch 后也可以不帶表達式,類似 if --else 分支來使用。 8) switch 后也可以直接聲明/定義一個變量,分號結束,不推薦。 9) switch 穿透\-fallthrough ,如果在 case 語句塊后增加 fallthrough ,則會繼續執行下一個 case,也 叫 switch 穿透 10) Type Switch:switch 語句還可以被用于 type-switch 來判斷某個 interface 變量中實際指向的 變量類型 #### **switch 和 if 的比較** 總結了什么情況下使用 switch ,什么情況下使用 if 1) 如果判斷的具體數值不多,而且符合整數、浮點數、字符、字符串這幾種類型。建議使用 swtich 語句,簡潔高效。 2) 其他情況:對區間判斷和結果為 bool 類型的判斷,使用 if,if 的使用范圍更廣。 ## **for 循環控制** ``` for 循環變量初始化; 循環條件; 循環變量迭代 { 循環操作(語句) } ``` 對上面的語法格式說明 1) 對 for 循環來說,有四個要素: 2) 循環變量初始化 3) 循環條件 4) 循環操作(語句) ,有人也叫循環體。 5) 循環變量迭代 for 循環執行的順序說明: 1) 執行循環變量初始化,比如 i := 1 2) 執行循環條件, 比如 i <= 10 3) 如果循環條件為真,就執行循環操作 :比如 fmt.Println(“....”) 4) 執行循環變量迭代 , 比如 i++ 5) 反復執行 2, 3, 4 步驟,直到 循環條件為 False ,就退出 for 循環。 #### **for 循環的使用注意事項和細節討論** ![](https://img.kancloud.cn/59/2f/592fac6fb332f908a1fd2d73b2a2c0e4_689x223.png) ![](https://img.kancloud.cn/63/5f/635f11ecc23554d5c30edff4674995a8_760x322.png) for 的三個值我們可以每個去掉進行進一步嘗試 #### **字符串遍歷方式 ** 1-傳統方式 ![](https://img.kancloud.cn/42/fe/42fedbc757ab695f1cc8bf865579d69c_664x183.png) 2字符串遍歷方式 2-for - range ![](https://img.kancloud.cn/2f/f8/2ff81a77e1c6a77578f88f92e2cb5cc3_683x196.png) 如果我們的字符串含有中文,那么傳統的遍歷字符串方式,就是錯誤,會出現亂碼。原因是傳統的 對字符串的遍歷是按照字節來遍歷,而一個漢字在 utf8 編碼是對應 3 個字節。 如何解決 需要要將 str 轉成 \[\]rune 切片.=> 體驗一把 ![](https://img.kancloud.cn/98/2e/982ed15c619434aee2b27803eb0addc2_768x187.png) 對應 for-range 遍歷方式而言,是按照字符方式遍歷。因此如果有字符串有中文,也是 ok ![](https://img.kancloud.cn/ae/68/ae6834188a7a396c5d89d15b2a410e9a_825x218.png) #### **while 和 do...while的實現** Go 語言沒有 while 和 do...while 語法,這一點需要同學們注意一下,如果我們需要使用類似其它語 言(比如 java / c 的 while 和 do...while ),可以通過 for 循環來實現其使用效果。 #### **while 循環的實現** ![](https://img.kancloud.cn/69/0f/690f563132f5825b6b11cc1a7c0ded90_885x284.png) 1) for 循環是一個無限循環 2) break 語句就是跳出 for 循環 ![](https://img.kancloud.cn/f5/21/f521f44eb1efa56687ecad193a789bf2_861x502.png) #### **do..while 的實現** ![](https://img.kancloud.cn/fe/60/fe60cd237009bbf95c43700f5d8f9590_940x286.png) 1) 上面的循環是先執行,在判斷,因此至少執行一次。 2) 當循環條件成立后,就會執行 break, break 就是跳出 for 循環,結束循環. ![](https://img.kancloud.cn/5a/39/5a393bc813baed9ea901211826567ccb_787x285.png) #### **跳轉控制語句-break** break 語句用于終止某個語句塊的執行,用于中斷當前 for 循環或跳出 switch 語句 1) break 語句出現在多層嵌套的語句塊中時,可以通過標簽指明要終止的是哪一層語句塊 ![](https://img.kancloud.cn/38/90/3890396873a73978638d1a5fc488aa11_857x370.png) (2) break 默認會跳出最近的 for 循環 (3) break 后面可以指定標簽,跳出標簽對應的 for 循環 #### **跳轉控制語句-continue** continue 語句用于結束本次循環,繼續執行下一次循環。 continue 語句出現在多層嵌套的循環語句體中時,可以通過標簽指明要跳過的是哪一層循環 , 這個和前面的 break 標簽的使用的規則一樣. ![](https://img.kancloud.cn/05/9a/059a0a83e971022b6015894e13b1f8ec_706x225.png) #### **跳轉控制語句-goto** 1) Go 語言的 goto 語句可以無條件地轉移到程序中指定的行。 2) goto 語句通常與條件語句配合使用。可用來實現條件轉移,跳出循環體等功能。 3) 在 Go 程序設計中一般不主張使用 goto 語句, 以免造成程序流程的混亂,使理解和調試程序 都產生困難 ![](https://img.kancloud.cn/ce/35/ce3574a2bb20b9b0b39b9d6464abd172_800x452.png) #### **跳轉控制語句-return** return 使用在方法或者函數中,表示跳出所在的方法或函數 1) 如果 return 是在普通的函數,則表示跳出該函數,即不再執行函數中 return 后面代碼,也可以 理解成終止函數。 2) 如果 return 是在 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>

                              哎呀哎呀视频在线观看