if語句
- 條件語句不需要()
- 支持一個初始化表達式,如 i:=0
- 語句中的變量會覆蓋外部語句的同名變量
func main() {
a := 1
if a := 0; a < 1 {
fmt.Println(a)
}
fmt.Println(a)
}
打印結果為:0 1
for語句
- go只有for一個循環(huán)語句關鍵字,但有三種形式
- 初始化和步進表達式可以是多個值
- 條件語句每次循環(huán)都會重新判斷,盡量使用變量或常亮判斷,避免函數(shù)
func main() {
a := 0
for {//for的第一種形式尺锚,無限循環(huán),手動break
a++
if a > 5 {
break
}
fmt.Println(a)
}
fmt.Println("over")
}
func main() {
a := 0
for a < 3 {//for的第二種形式惜浅,后面跟著判斷語句
fmt.Println(a)
a++
}
fmt.Println("over")
}
func main() {
str := "abc"
for a, len := 0, len(str); a < len; a++ {//for的第三種形式瘫辩,并優(yōu)化了判斷語句
fmt.Println(a)
}
fmt.Println("over")
}
switch語句
- 可以使用任何類型和表達式作為條件語句
- 不需要寫break,條件符合自動終止
- 如果希望繼續(xù)執(zhí)行下一個case坛悉,最后添加fallthrough語句伐厌,使用了fallthrough語句后,會跳過case的判斷裸影,直接執(zhí)行下一條的代碼內(nèi)容
- 支持一個初始化表達式挣轨,可以是并行方式,但右側需要添加分號
func main() {
a := 3
switch {
case a > 0:
fmt.Println("a>0")
fallthrough
case a > 1:
fmt.Println("a>1")
case a > 2:
fmt.Println("a>2")
}
switch a {
case 3:
fmt.Println("a=" + strconv.Itoa(a))
fallthrough
case 1:
fmt.Println("a=" + strconv.Itoa(a))
fallthrough
case 4:
fmt.Println("a=" + strconv.Itoa(a))
}
switch b := 1; {
case b >= 1:
fmt.Println("b>=1")
fallthrough
case b >= 3:
fmt.Println("b>=3")
}
}
goto/break/continue
- 三個語句都可以配合標簽使用
- 標簽名區(qū)分大小寫
- break與continue配合標簽可用于多層循環(huán)的跳出
- goto是調整執(zhí)行位置空民,與其他2個語句配合標簽的結果并不相同
func main() {
tag1:
for {
for i := 0; i < 10; i++ {
fmt.Println(i)
if i > 5 {
//break 單獨的break指跳出當前for循環(huán)層級刃唐,代碼繼續(xù)死循環(huán)
break tag1 //-->跳出循環(huán)到tag1標簽的層級
}
}
}
fmt.Println("over")
}
func main() {
for {
for i := 0; i < 10; i++ {
fmt.Println(i)
if i > 5 {
goto tag1 //-->調整執(zhí)行位置到tag1標簽
}
}
}
tag1:
fmt.Println("over")
}
func main() {
tag1:
for i := 0; i < 10; i++ {
fmt.Println(i)
for {
continue tag1//跳到上一層的有限循環(huán)繼續(xù)執(zhí)行
}
}
fmt.Println("over")
}
直通車
一.Go開發(fā)工具及命令
二.Go編程基礎知識
三.Go的類型與變量
四.Go常量與運算符
五.Go控制語句
六.Go數(shù)組
七.Go切片slice
八.Go哈希字典map
九.Go函數(shù)func
十.Go結構struct