流程控制
程序的流程控制結(jié)構(gòu)一具有三種:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)
-
順序結(jié)構(gòu):從上到下,逐行執(zhí)行。默認(rèn)的邏輯
-
選擇結(jié)構(gòu):條件滿(mǎn)足某些代碼才會(huì)執(zhí)行
-
if
-
switch
-
select ,后面 channel 再講
-
-
循環(huán)結(jié)構(gòu):條件滿(mǎn)足某些代碼會(huì)被反復(fù)執(zhí)行0-N次
- for
一、if 語(yǔ)句
條件語(yǔ)句需要開(kāi)發(fā)者通過(guò)指定一個(gè)或多個(gè)條件,并通過(guò)測(cè)試條件是否為 true 來(lái)決定是否執(zhí)行指定語(yǔ)句,并在條件為false的情況在執(zhí)行另外的語(yǔ)句。
下圖展示了程序語(yǔ)言中條件語(yǔ)句的結(jié)構(gòu):
package main
import "fmt"
func main() {
// 分?jǐn)?shù)
var score int = 66
if score >= 90 && score <= 100 {
fmt.Println("優(yōu)秀")
} else if score >= 80 && score < 90 {
fmt.Println("良好")
} else if score >= 60 && score < 80 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
}
輸出
1.if 嵌套語(yǔ)句
if 布爾表社式 1 {
/* 在布爾表達(dá)式 1 為 true 3:執(zhí)行 */
if 布爾表達(dá)式 2 {
/* 在布爾表達(dá)式 2 true 時(shí)執(zhí)行 */
}
}
package main
import "fmt"
func main() {
var one, two int
// 初始密碼
var pwd int = 12345678
// 接收用戶(hù)輸入密碼
fmt.Print("請(qǐng)輸入密碼:")
fmt.Scan(&one)
// 功能:驗(yàn)證密碼是否正確
if one == pwd {
fmt.Print("請(qǐng)?jiān)俅屋斎朊艽a:")
fmt.Scan(&two)
if two == pwd {
fmt.Println("登錄成功")
} else {
fmt.Println("第二次輸入密碼錯(cuò)誤,登錄失敗,請(qǐng)重新輸入密碼……")
}
} else {
fmt.Println("輸入密碼錯(cuò)誤,登錄失敗,請(qǐng)重新輸入密碼……")
}
}
輸出
二、switch 語(yǔ)句
switch語(yǔ)句用于基于不同條件執(zhí)行不同動(dòng)作,每一個(gè)case分支都是唯一的,從上至下逐一測(cè)試,直到匹配為止。
switch var1 {
case test1:
...
case test2:
...
defauIt:
...
}
switch語(yǔ)句執(zhí)行的過(guò)程從上至下,直到找到匹配項(xiàng),匹配項(xiàng)后面也不需要再加 break.。switch默認(rèn)情況下 case 最后自帶 break 語(yǔ)句
package main
import "fmt"
func main() {
var score string = "D"
// 匹配
switch score {
case "A":
fmt.Println("等級(jí)為A,成績(jī)?cè)?0~100范圍內(nèi)")
case "B":
fmt.Println("等級(jí)為B,成績(jī)?cè)?0~90范圍內(nèi)")
case "C":
fmt.Println("等級(jí)為C,成績(jī)?cè)?0~79范圍內(nèi)")
default:
fmt.Println("等級(jí)為D,成績(jī)?cè)?~59范圍內(nèi)")
}
// switch 默認(rèn)條件 bool = true
switch {
case false:
fmt.Println("false")
case true:
fmt.Println("true")
default:
fmt.Println("其他")
}
}
輸出
fallthrough 貫穿,直通
switch默認(rèn)情況下匹配成功后就不會(huì)執(zhí)行其他case,如果我們需要執(zhí)行后面的case,可以使用 fallthrough
穿透case使用 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case
語(yǔ)句,fallthrough不會(huì)判斷下條case的表達(dá)結(jié)果是否為true.
package main
import "fmt"
func main() {
a := false
// switch 默認(rèn)條件 bool = true
switch a {
case false:
fmt.Println("false")
fallthrough // case 穿透,不管下一個(gè)條件是否滿(mǎn)足,都會(huì)執(zhí)行
case true:
fmt.Println("true")
default:
fmt.Println("其他")
}
}
輸出
package main
import "fmt"
func main() {
a := false
// switch 默認(rèn)條件 bool = true
switch a {
case false:
fmt.Println("false")
fallthrough // case 穿透,不管下一個(gè)條件是否滿(mǎn)足,都會(huì)執(zhí)行
case true:
if a == false {
break // 終止 case 穿透
}
fmt.Println("true")
default:
fmt.Println("其他")
}
}
輸出
三、for 循環(huán)
在不少實(shí)際問(wèn)題中有許多具有規(guī)律性的重復(fù)操作,因此在程序中就需要重復(fù)執(zhí)行某些語(yǔ)句。for 循環(huán)是一個(gè)循環(huán)控制結(jié)構(gòu),可以執(zhí)行指定次數(shù)的循環(huán)。
package main
import "fmt"
func main() {
// for 條件的起始值;循環(huán)條件;控制變量自增或自減
// for ;循環(huán)條件;
// for {} 無(wú)限循環(huán)
i := 1
for {
fmt.Println(i)
i++
}
sum := 0
// for 給控制變量賦值初值,循環(huán)條件給控制變量增量或減量\
// 計(jì)算 1 到 10 的數(shù)字之和
for i := 1; i <= 10; i++ {
// 循環(huán)體
sum += i
}
fmt.Println(sum)
}
栗子:輸出一個(gè)10*10的方陣
package main
import "fmt"
func main() {
// i 控制行, j 控制列
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
fmt.Print("* ")
}
fmt.Println()
}
}
輸出
栗子:九九乘法表
package main
import "fmt"
func main() {
// i 控制行, j 控制列
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d*%d=%d \t", j, i, j*i)
}
fmt.Println()
}
}
輸出
break 結(jié)束當(dāng)前整個(gè)循環(huán)
package main
import "fmt"
func main() {
for i := 1; i <= 6; i++ {
if i == 4 {
break
}
fmt.Println(i)
}
}
continue 結(jié)束本次循環(huán)
package main
import "fmt"
func main() {
for i := 1; i <= 6; i++ {
if i == 4 {
continue
}
fmt.Println(i)
}
}
輸出
四、string
什么是String
Go中的字符串是一個(gè)字節(jié)的切片,可以通過(guò)將其內(nèi)容封裝在""中來(lái)創(chuàng)建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 編碼。字符串是一些字節(jié)的集合。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-461864.html
package main
import "fmt"
func main() {
str := "hello,guan"
fmt.Println(str)
// 獲取字符串的長(zhǎng)度 len
fmt.Println("字符串長(zhǎng)度為:", len(str))
// 獲取指定的字節(jié)
fmt.Println("字節(jié)打?。?, str[4])
fmt.Printf("%c", str[4])
fmt.Println()
for i := 0; i < len(str); i++ {
fmt.Printf("%c\n", str[i])
}
// for range 循環(huán),遍歷數(shù)組、切片....
// 返回下標(biāo)和對(duì)應(yīng)的值,使用這個(gè)值就行了
for i, v := range str {
fmt.Print(i)
fmt.Print("--")
fmt.Printf("%c", v)
fmt.Println()
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461864.html
到了這里,關(guān)于【Go編程語(yǔ)言】流程控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!