流程控制

if-else 结构

switch 结构

格外注意的:一旦成功地匹配到每个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使用 break 语句来表示结束,因此,程序也不会自动地去执行下一个分支的代码。 如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用 fallthrough 关键字来达到目的。

select 结构

用于 channel 的选择

for (range) 结构

附录:代码

package main

import "fmt"

func main() {
	//s := ifelse(99)
	//fmt.Printf("%s\n", s)
	//
	//是 := switch1(10)
	//fmt.Printf("%s\n", 是)

	//forr()

	forange()
}

// if-else 分支
func ifelse(int2 int) string {
	if int2%2 == 1 {
		return "奇数"
	}
	return "偶数"
}

// switch 分支
func switch1(int2 int) string {
	int2 = int2 % 9
	switch int2 {
	case 1:
		fmt.Printf("这个下面应该还有一个输出\n")
		fallthrough
	case 2:
		return "晶晶"
	case 3:
		return "舒孝元"
	default:
		return "默认没找到"
	}
}

// for 循环
func forr() {
	//for i := 0; i < 5; i++ {
	//	fmt.Printf("for循环:%d\n", i)
	//}

	// 同时使用多个计数器
	//var N = 10
	//for i, j := 0, N; i < j; i, j = i+1, j-1 {
	//	fmt.Printf("i=%d,j=%d\n", i, j)
	//}

	var i = 5
	for i >= 0 {
		i = i - 1
		fmt.Printf("打印i的值:%d\n", i)
	}

	for i := 0; i < 5; i++ {
		var v int
		fmt.Printf("%d ", v)
		v = 5
	}

	// 没有结束条件,一直加下去
	//for i := 0; ; i++ {
	//	fmt.Println("Value of i is now:", i)
	//}

	// 条件永远成立,输出 0
	//for i := 0; i < 3; {
	//	fmt.Println("Value of i:", i)
	//}

	// 结束条件在循环里
	//s := ""
	//for ; s != "aaaaa"; {
	//	fmt.Println("Value of s:", s)
	//	s = s + "a"
	//}

	// 同时使用多个计数器
	for i, j, s := 0, 5, "a"; i < 3 && j < 100 && s != "aaaaa"; i, j, s = i+1, j+1, s+"a" {
		fmt.Println("Value of i, j, s:", i, j, s)
	}
}

// for-range 结构,类似于 foreach
func forange() {
	str := "Go is a beautiful language!"
	fmt.Printf("The length of str is: %d\n", len(str))
	for pos, char := range str {
		fmt.Printf("Character on position %d is: %c \n", pos, char)
	}
	fmt.Println()
	str2 := "Chinese: 日本語"
	fmt.Printf("The length of str2 is: %d\n", len(str2))
	for pos, char := range str2 {
		fmt.Printf("character %c starts at byte position %d\n", char, pos)
	}
	fmt.Println()
	fmt.Println("index int(rune) rune char bytes")
	for index, rune := range str2 {
		fmt.Printf("%-2d %d %U '%c' % X\n", index, rune, rune, rune, []byte(string(rune)))
	}
}