<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                #程序控制結構 雖然劇透可恥,但是為了體現Go語言的設計簡潔之處,必須要先劇透一下。 Go語言的控制結構關鍵字只有 `if..else if..else`,`for` 和 `switch`。 而且在Go中,為了避免格式化戰爭,對程序結構做了統一的強制的規定。看下下面的例子。 請比較一下A程序和B程序的不同之處。 **A程序** package main import ( "fmt" ) func main() { fmt.Println("hello world") } **B程序** package main import ( "fmt" ) func main() { fmt.Println("hello world") } 還記得我們前面的例子中,`{}`的格式是怎么樣的么?在上面的兩個例子中只有A例的寫法是對的。因為在Go語言中,強制了`{}`的格式。如果我們試圖去編譯B程序,那么會發生如下的錯誤提示。 ./test_format.go:9: syntax error: unexpected semicolon or newline before { **if..else if..else** if..else if..else 用來判斷一個或者多個條件,然后根據條件的結果執行不同的程序塊。舉個簡單的例子。 package main import ( "fmt" ) func main() { var dog_age = 10 if dog_age > 10 { fmt.Println("A big dog") } else if dog_age > 1 && dog_age <= 10 { fmt.Println("A small dog") } else { fmt.Println("A baby dog") } } 上面的例子判斷狗狗的年齡如果`(if)`大于10就是一個大狗;否則判斷`(else if)`狗狗的年齡是否小于等于10且大于1,這個時候狗狗是小狗狗。否則`(else)`的話(就是默認狗狗的年齡小于等于1歲),那么狗狗是Baby狗狗。 在上面的例子中,我們還可以發現Go的if..else if..else語句的判斷條件一般都不需要使用`()`。當然如果你還是愿意寫,也是對的。另外如果為了將某兩個或多個條件綁定在一起判斷的話,還是需要括號`()`的。 比如下面的例子也是對的。 package main import ( "fmt" ) func main() { const Male = 'M' const Female = 'F' var dog_age = 10 var dog_sex = 'M' if (dog_age == 10 && dog_sex == 'M') { fmt.Println("dog") } } 但是如果你使用Go提供的格式化工具來格式化這段代碼的話,Go會智能判斷你的括號是否必須有,否則的話,會幫你去掉的。你可以試試。 go fmt test_bracket.go 然后你會發現,咦?!果真被去掉了。 另外因為每個判斷條件的結果要么是true要么是false,所以可以使用`&&`,`||`來連接不同的條件。使用`!`來對一個條件取反。 **switch** switch的出現是為了解決某些情況下使用if判斷語句帶來的繁瑣之處。 例如下面的例子: package main import ( "fmt" ) func main() { //score 為 [0,100]之間的整數 var score int = 69 if score >= 90 && score <= 100 { fmt.Println("優秀") } else if score >= 80 && score < 90 { fmt.Println("良好") } else if score >= 70 && score < 80 { fmt.Println("一般") } else if score >= 60 && score < 70 { fmt.Println("及格") } else { fmt.Println("不及格") } } 在上面的例子中,我們用if..else if..else來對分數進行分類。這個只是一般的情況下if判斷條件的數量。如果if..else if..else的條件太多的話,我們可以使用switch來優化程序。比如上面的程序我們還可以這樣寫: package main import ( "fmt" ) func main() { //score 為 [0,100]之間的整數 var score int = 69 switch score / 10 { case 10: case 9: fmt.Println("優秀") case 8: fmt.Println("良好") case 7: fmt.Println("一般") case 6: fmt.Println("及格") default: fmt.Println("不及格") } } 關于switch的幾點說明如下: (1) switch的判斷條件可以為任何數據類型。 package main import ( "fmt" ) func main() { var dog_sex = "F" switch dog_sex { case "M": fmt.Println("A male dog") case "F": fmt.Println("A female dog") } } (2) 每個case后面跟的是一個完整的程序塊,該程序塊`不需要{}`,也`不需要break結尾`,因為每個case都是獨立的。 (3) 可以為switch提供一個默認選項default,在上面所有的case都沒有滿足的情況下,默認執行default后面的語句。 **for** for用在Go語言的循環條件里面。比如說要你輸出1...100之間的自然數。最笨的方法就是直接這樣。 package main import ( "fmt" ) func main() { fmt.Println(1) fmt.Println(2) ... fmt.Println(100) } 這個不由地讓我想起一個笑話。 >以前一個地主的兒子學習寫字,只學了三天就把老師趕走了。因為在這三天里面他學寫了一,二,三。他覺得寫字真的太簡單了,不就是畫橫線嘛。于是有一天老爹過壽,讓他來記送禮的人名單。直到中午還沒有記完,老爹很奇怪就去問他怎么了。他哭著說,“不知道這個人有什么毛病,姓什么不好,姓萬”。 哈哈,回來繼續。我們看到上面的例子也是如地主的兒子那樣就不好了。所以,我們必須使用循環結構。我們用for的循環語句來實現上面的例子。 package main import ( "fmt" ) func main() { var i int = 1 for ; i <= 100; i++ { fmt.Println(i) } } 在上面的例子中,首先初始化變量i為1,然后在for循環里面判斷是否小于等于100,如果是的話,輸出i,然后再使用i++來將i的值自增1。上面的例子,還有一個更好的寫法,就是將i的定義和初始化也放在for里面。如下: package main import ( "fmt" ) func main() { for i := 1; i <= 100; i++ { fmt.Println(i) } } 在Go里面沒有提供while關鍵字,如果你懷念while的寫法也可以這樣: package main import ( "fmt" ) func main() { var i int = 1 for i <= 100 { fmt.Println(i) i++ } } 或許你會問,如果我要死循環呢?是不是`for true`?呵呵,不用了,直接這樣。 for{ ... } 以上就是Go提供的全部控制流程了。 再復習一下,Go只提供了: **if** if ...{ ... }else if ...{ ... }else{ ... } **switch** switch(...){ case ...: ... case ...: ... ... default: ... } **for** for ...; ...; ...{ ... } for ...{ ... } for{ ... }
                  <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>

                              哎呀哎呀视频在线观看