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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                相比較 C 和 Java 等其它語言而言,Go 語言中的 switch 結構使用上更加靈活。它接受任意形式的表達式: ~~~ switch var1 { case val1: ... case val2: ... default: ... } ~~~ 變量 var1 可以是任何類型,而 val1 和 val2 則可以是同類型的任意值。類型不被局限于常量或整數,但必須是相同的類型;或者最終結果為相同類型的表達式。前花括號?`{`?必須和 switch 關鍵字在同一行。 您可以同時測試多個可能符合條件的值,使用逗號分割它們,例如:`case val1, val2, val3`。 每一個?`case`?分支都是唯一的,從上直下逐一測試,直到匹配為止。 一旦成功地匹配到每個分支,在執行完相應代碼后就會退出整個 switch 代碼塊,也就是說您不需要特別使用?`break`?語句來表示結束。 因此,程序也不會自動地去執行下一個分支的代碼。如果在執行完每個分支的代碼后,還希望繼續執行后續分支的代碼,可以使用?`fallthrough`?關鍵字來達到目的。 因此: ~~~ switch i { case 0: // 空分支,只有當 i == 0 時才會進入分支 case 1: f() // 當 i == 0 時函數不會被調用 } ~~~ 并且: ~~~ switch i { case 0: fallthrough case 1: f() // 當 i == 0 時函數也會被調用 } ~~~ 在?`case ...:`?語句之后,您不需要使用花括號將多行語句括起來,但您可以在分支中進行任意形式的編碼。當代碼塊只有一行時,可以直接放置在?`case`?語句之后。 您同樣可以使用?`return`?語句來提前結束代碼塊的執行。當您在 switch 語句塊中使用?`return`?語句,并且您的函數是有返回值的,您還需要在 switch 之后添加相應的?`return`?語句以確保函數始終會返回。 可選的?`default`?分支可以出現在任何順序,但最好將它放在最后。它的作用類似與?`if-else`?語句中的?`else`,表示不符合任何已給出條件時,執行相關語句。 示例 5.4?[switch1.go](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/examples/chapter_5/switch1.go): ~~~ package main import "fmt" func main() { var num1 int = 100 switch num1 { case 98, 99: fmt.Println("It's equal to 98") case 100: fmt.Println("It's equal to 100") default: fmt.Println("It's not equal to 98 or 100") } } ~~~ 輸出: ~~~ It's equal to 100 ~~~ 在第 12.1 節,我們會使用 switch 語句判斷從鍵盤輸入的字符(詳見第 12.2 節的 switch.go)。switch 語句的第二種形式是不提供任何被判斷的值(實際上默認為判斷是否為 true),然后在每個 case 分支中進行測試不同的條件。當任一分支的測試結果為 true 時,該分支的代碼會被執行。這看起來非常像鏈式的?`if-else`?語句,但是在測試條件非常多的情況下,提供了可讀性更好的書寫方式。 ~~~ switch { case condition1: ... case condition2: ... default: ... } ~~~ 例如: ~~~ switch { case i < 0: f1() case i == 0: f2() case i > 0: f3() } ~~~ 任何支持進行相等判斷的類型都可以作為測試表達式的條件,包括 int、string、指針等。 示例 5.4?[switch2.go](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/examples/chapter_5/switch2.go): ~~~ package main import "fmt" func main() { var num1 int = 7 switch { case num1 < 0: fmt.Println("Number is negative") case num1 > 0 && num1 < 10: fmt.Println("Number is between 0 and 10") default: fmt.Println("Number is 10 or greater") } } ~~~ 輸出: ~~~ Number is between 0 and 10 ~~~ switch 語句的第三種形式是包含一個初始化語句: ~~~ switch initialization { case val1: ... case val2: ... default: ... } ~~~ 這種形式可以非常優雅地進行條件判斷: ~~~ switch result := calculate(); { case result < 0: ... case result > 0: ... default: // 0 } ~~~ 在下面這個代碼片段中,變量 a 和 b 被平行初始化,然后作為判斷條件: ~~~ switch a, b := x[i], y[j]; { case a < b: t = -1 case a == b: t = 0 case a > b: t = 1 } ~~~ switch 語句還可以被用于 type-switch(詳見第 11.4 節)來判斷某個 interface 變量中實際存儲的變量類型。 **問題 5.1:** 請說出下面代碼片段輸出的結果: ~~~ k := 6 switch k { case 4: fmt.Println("was <= 4"); fallthrough; case 5: fmt.Println("was <= 5"); fallthrough; case 6: fmt.Println("was <= 6"); fallthrough; case 7: fmt.Println("was <= 7"); fallthrough; case 8: fmt.Println("was <= 8"); fallthrough; default: fmt.Println("default case") } ~~~ **練習 5.2:**?[season.go](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/exercises/chapter_5/season.go): 寫一個 Season 函數,要求接受一個代表月份的數字,然后返回所代表月份所在季節的名稱(不用考慮月份的日期)。
                  <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>

                              哎呀哎呀视频在线观看