go語言學習筆記四 流程控制(if else,switch,for循環)

1 if else 基本使用

package main

import "fmt"

func main() {
	// 基本寫法
	a := 1
	b := 2
	if a == 2 {
		fmt.Printf("1.滿足第一個條件\n")
	} else if b == 2 {
		fmt.Printf("2.滿足第二個條件\n")
	} else {
		fmt.Printf("3.滿足其他條件\n")
	}

	// go 支持在判斷語句中定義變量
	if age := 20; age < 18 {
		fmt.Printf("4.age小於18 age:%v\n", age)
	} else {
		fmt.Printf("5.age大於18 age:%v\n", age)
	}

	// 嵌套分支
	a1, a2 := 1, 2
	if a1 == 1 {
		fmt.Printf("6.滿足第一層if條件\n")
		if a2 == 3 {
			fmt.Printf("7.滿足第二層if條件\n")
		} else {
			fmt.Printf("8.滿足第二層else條件\n")
		}
	} else {
		fmt.Printf("9.滿足else條件\n")
	}

}

輸出

2.滿足第二個條件
5.age大於18 age:20
6.滿足第一層if條件
8.滿足第二層else條件

2 switch 基本使用

package main

import "fmt"

func sum(a int) (ret int) {
	return a + 1
}

func main() {
	// switch 後面的類型要和case後面的類型相同
	// case 後面有多個表達用 ,分開,滿足1個就爲真,每一個case後面的條件都不同
	a := 10
	switch sum(a) {
	case 11:
		fmt.Printf("1.a==11\n")
	case 2, 3:
		fmt.Printf("2.a==2 or a==3\n")
	case 4:
		fmt.Printf("3.a==4\n")
	default:
		fmt.Printf("4.default\n")
	}
	// switch 後面不加表達式 可以當if else使用
	switch {
	case sum(a) < 1:
		fmt.Printf("5.sum(a)<1\n")
	case sum(a) < 10:
		fmt.Printf("6.sum(a)<10\n")
	case sum(a) == 11:
		fmt.Printf("7.sum(a)==11\n")
	default:
		fmt.Printf("8.default\n")
	}
	// switch 穿透 不常用
	switch {
	case sum(a) < 1:
		fmt.Printf("9.sum(a)<1\n")
	case sum(a) == 11:
		fmt.Printf("10.sum(a)==11\n")
		// 滿足條件穿透輸出下一個case的值 等價於 case sum(a) == 11, sum(a) == 12
		fallthrough
	case sum(a) == 12:
		fmt.Printf("11.switchc穿透 sum(a)==12\n")

	default:
		fmt.Printf("12.default\n")
	}
}

輸出

1.a==11
7.sum(a)==11
10.sum(a)==11
11.switchc穿透 sum(a)==12

3. for 循環

package main

import "fmt"

func main() {
	// for 循環
	for i := 1; i <= 10; i++ {
		fmt.Printf("1.循環次數%d\n", i)
	}
	// 使用range 返回index和 切片的值
	slice1 := [] int64 {100, 200, 300}
	for i, c :=range slice1{
		fmt.Printf("2.i:%v,c:%v\n", i, c)
	}
	//range也可以用來枚舉Unicode字符串。第一個參數是字符的索引,第二個是字符(Unicode的值)本身。
	// 獲取字符串的值 使用 %c
	var str = "go"
	for i, c := range str {
		fmt.Printf("3.index:%d, Unicode的值:%v, value:%c\n", i, c, c)
	}
}

輸出結果

1.循環次數1
1.循環次數2
1.循環次數3
1.循環次數4
1.循環次數5
1.循環次數6
1.循環次數7
1.循環次數8
1.循環次數9
1.循環次數10
2.i:0,c:100
2.i:1,c:200
2.i:2,c:300
3.index:0, Unicode的值:103, value:g
3.index:1, Unicode的值:111, value:o

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章