流程控制 for switch range break goto


func forCase() {
	for i := 0; i < 10; i++ {
		if i == 5 {
			continue
		}
		fmt.Println("位置1  执行 for 语句块 i:", i)
	}
	fmt.Println("-------循环 slice ------")
	list := []int{1, 2, 3, 4, 5}
	for index, value := range list {
		fmt.Println("循环切片  执行 for 语句块 index:", index, "value:", value)
	}
	fmt.Println("-------循环 map ------")
	mp := map[string]string{"name": "tom", "age": "18"}
	for k, v := range mp {
		fmt.Println("循环map  执行 for 语句块 k:", k, "v:", v)
	}

	fmt.Println("-------循环 string ------")
	str := "你们是八九点钟的太阳"
	for index, value := range str {
		fmt.Println("循环string  执行 for 语句块 index:", index, "value:", value, "value:", string(value))
	}
	fmt.Println("------- 死循环  ------")
	var j int
	for {
		fmt.Println("死循环 执行 for 语句块:", j)
		j++
		if j >= 10 {
			break
		}
	}

	fmt.Println("-------- 循环嵌套循环------ ")
	for i := 0; i < 2; i++ {
		for j := 0; j < 2; j++ {
			fmt.Println("循环嵌套循环 i:", i, "j:", j)
		}
	}

	fmt.Println("-------- 循环嵌套循环 break 只能跳出当前循环---- ")
	for i := 0; i < 2; i++ {
		for j := 0; j < 2; j++ {
			fmt.Println("循环嵌套循环 i:", i, "j:", j)
			break
		}
	}

	fmt.Println("-------- 循环嵌套循环 break 跳出lab---- ")
lab1:
	for i := 0; i < 2; i++ {
		for j := 0; j < 2; j++ {
			fmt.Println("循环嵌套循环 i:", i, "j:", j)
			break lab1
		}
	}
}

a is zero
a is one
a is not zero
位置1  执行 for 语句块 i: 0
位置1  执行 for 语句块 i: 1
位置1  执行 for 语句块 i: 2
位置1  执行 for 语句块 i: 3
位置1  执行 for 语句块 i: 4
位置1  执行 for 语句块 i: 6
位置1  执行 for 语句块 i: 7
位置1  执行 for 语句块 i: 8
位置1  执行 for 语句块 i: 9
-------循环 slice ------
循环切片  执行 for 语句块 index: 0 value: 1
循环切片  执行 for 语句块 index: 1 value: 2
循环切片  执行 for 语句块 index: 2 value: 3
循环切片  执行 for 语句块 index: 3 value: 4
循环切片  执行 for 语句块 index: 4 value: 5
-------循环 map ------
循环map  执行 for 语句块 k: name v: tom
循环map  执行 for 语句块 k: age v: 18
-------循环 string ------
循环string  执行 for 语句块 index: 0 value: 20320 value: 你
循环string  执行 for 语句块 index: 3 value: 20204 value: 们
循环string  执行 for 语句块 index: 6 value: 26159 value: 是
循环string  执行 for 语句块 index: 9 value: 20843 value: 八
循环string  执行 for 语句块 index: 12 value: 20061 value: 九
循环string  执行 for 语句块 index: 15 value: 28857 value: 点
循环string  执行 for 语句块 index: 18 value: 38047 value: 钟
循环string  执行 for 语句块 index: 21 value: 30340 value: 的
循环string  执行 for 语句块 index: 24 value: 22826 value: 太
循环string  执行 for 语句块 index: 27 value: 38451 value: 阳
------- 死循环  ------
死循环 执行 for 语句块: 0
死循环 执行 for 语句块: 1
死循环 执行 for 语句块: 2
死循环 执行 for 语句块: 3
死循环 执行 for 语句块: 4
死循环 执行 for 语句块: 5
死循环 执行 for 语句块: 6
死循环 执行 for 语句块: 7
死循环 执行 for 语句块: 8
死循环 执行 for 语句块: 9
-------- 循环嵌套循环------ 
循环嵌套循环 i: 0 j: 0
循环嵌套循环 i: 0 j: 1
循环嵌套循环 i: 1 j: 0
循环嵌套循环 i: 1 j: 1
-------- 循环嵌套循环 break 只能跳出当前循环---- 
循环嵌套循环 i: 0 j: 0
循环嵌套循环 i: 1 j: 0
-------- 循环嵌套循环 break 跳出lab---- 
循环嵌套循环 i: 0 j: 0

switchCase("a", "b")

func switchCase(alpha string, in interface{}) {
	switch alpha {
	case "a":
		fmt.Println("a")
	case "b":
		fmt.Println("b")
	case "c", "d":
		fmt.Println("c")
		fmt.Println("d")
		fallthrough
	case "e":
		fmt.Println("e")
	default:
		fmt.Println("default")
	}

	switch in.(type) {
	case string:
		fmt.Println("string")
	default:
		fmt.Println("default")
	}
}

-------- switch case---- 
a
string

func gotoCase() {
	var a = 0
lab1:
	fmt.Println("--------goto case------")
	for i := 0; i < 10; i++ {
		a += i
		if a == 5 {
			goto lab1
		}
		fmt.Println("----------a:", a, "i:", i)
	}
}

--------goto case------
----------a: 0 i: 0
----------a: 1 i: 1
----------a: 3 i: 2
----------a: 6 i: 3
----------a: 10 i: 4
----------a: 15 i: 5
----------a: 21 i: 6
----------a: 28 i: 7
----------a: 36 i: 8
----------a: 45 i: 9
posted @ 2025-09-18 11:03  风动随心  阅读(5)  评论(0)    收藏  举报