三、Go语言控制语句
@Author:Runsen
Go的語法很簡單,其實也有一部分就是因為Go語言中控制語句關(guān)鍵字很少,但卻完全滿足了我們的需求,下面我列舉了Go語言中常用的控制語言,對每一個控制語句都進(jìn)行代碼展示與解釋。
文章目錄
- if 語句
- switch語句
- for循環(huán)
- goto語句
if 語句
依據(jù)條件是否滿足確定執(zhí)行哪個分支。
語法:
注意:Go語言規(guī)定與if匹配的左括號{必須與if和表達(dá)式放在同一行,{放在其他位置會觸發(fā)編譯錯誤。同理,與else匹配的{也必須與else寫在同一行,else也必須與上一個if或else if右邊的大括號在同一行。
package mainimport ("fmt" )func main() {age := 20if age > 18 {fmt.Println("你已經(jīng)是成年人了")} else if age > 6 {fmt.Println("你還是一個小屁孩")} else {fmt.Println("你還是一個小娃娃")} }你已經(jīng)是成年人了switch語句
有時候我們有大量if…else if…else語句,這樣寫不美觀,也不夠直觀。對于這類需求,Go語言用switch 語句對其進(jìn)行條件判斷,其基本語法如下:
switch 判斷變量 {case 表達(dá)式1:語句1case 表達(dá)式2:語句2......default:默認(rèn)語句 }例子:我們根據(jù)一個人的年齡去判斷屬于哪一年齡段。
package mainimport "fmt"func main() {age := 18switch age {case 60:fmt.Print("老人")case 30:fmt.Print("中年")case 18:fmt.Print("青年")case 6:fmt.Print("少年")default:fmt.Print("你是一個人才")} }青年注意:Go語言規(guī)定每個switch只能有一個default分支,還有case沒有數(shù)值大于小于的比較
這里需要補充一個:fallthrough。fallthrough可以執(zhí)行滿足條件的case的下一個case,是為了兼容C語言中的case設(shè)計的。如下:
package mainimport "fmt"func main() {s := "a"switch {case s == "a":fmt.Println("a")fallthroughcase s == "b":fmt.Println("b")case s == "c":fmt.Println("c")default:fmt.Println("...")} }這樣在執(zhí)行s == "a"的時候會同時執(zhí)行s == "b"。
for循環(huán)
在Go語言不再使用 do 或 while 循環(huán),只有一種循環(huán)語句,那就是for循環(huán) ,其基本格式如下:
for 初始語句;條件表達(dá)式;結(jié)束語句{循環(huán)體 }下面舉一個例子,比如輸出0到9。
package mainimport "fmt"func main() {for i := 0; i < 10; i++ {fmt.Println(i)} }0 1 2 3 4 5 6 7 8 9如果for后面不跟任何語句,則是無限循環(huán),如下所示。
package mainimport "fmt"func main() {for {fmt.Println(我們學(xué)習(xí)Go")} }Go語言中可以使用for range遍歷數(shù)組、切片、字符串、map 及通道(channel)。通過for range遍歷的返回值有以下規(guī)律:
- 數(shù)組、切片、字符串返回索引和值。
- map返回鍵和值。
- 通道(channel)只返回通道內(nèi)的值。
下面舉一個例子,遍歷字符串,如下所示。
package mainimport "fmt"func main() {s := "Hello"for i, v := range s {fmt.Printf("%d - %c \n", i, v)} }0 - H 1 - e 2 - l 3 - l 4 - o如果我們不需要索引值,我們可以用匿名變量去接收,如下所示。
package mainimport "fmt"func main() {s := "Hello"for _, v := range s {fmt.Printf("%c \n", v)} }H e l l o還有兩個關(guān)鍵詞,跳出循環(huán)有break和continue,break和continue和其他編程語言相同。
break:跳出當(dāng)前循環(huán)
package mainimport "fmt"func main() {for i := 0; i < 10; i++ {if i == 5 {break}fmt.Println(i)} }0 1 2 3 4continue:跳出本次循環(huán)
package mainimport "fmt"func main() {for i := 0; i < 10; i++ {if i == 5 {continue}fmt.Println(i)} }0 1 2 3 4 6 7 8 9goto語句
在雙層嵌套的for循環(huán),經(jīng)常見到goto語句。goto語句可以在快速跳出循環(huán)、避免重復(fù)退出上有一定的幫助。
轉(zhuǎn)到goto語句的語法如下:
goto label; .. label: statement;在這里,label可以是除去關(guān)鍵字任何純文本,它可以在任何地方設(shè)置在Go程序的上方或下方,以使用goto語句。
這邊舉一個例子,用 goto 的方式來實現(xiàn)一個打印 10到19的循環(huán)。
package mainimport "fmt"func main() {var a int = 10LOOP: for a < 20 {if a == 15 {a = a + 1goto LOOP}fmt.Printf("value of a: %d\n", a)a++ } }value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 16 value of a: 17 value of a: 18 value of a: 19總結(jié)
以上是生活随笔為你收集整理的三、Go语言控制语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一、Go语言环境搭建
- 下一篇: lpr一年调整一次吗