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