05、流程控制

1、if  [if--else] [if--else if--else] 等流程控制语句

--if 的基本控制结构语法:
    if 表达式1 {
        分支1
    } else if 表达式2 {
        分支2
    } else{
        分支3
    }

--if 示例1:
    --这种形式下,变量定义在if 外部
    score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}

--if 示例2:
    --这种形式下,变量定义在if 的判断条件里面
    --可以在跳出判断时销毁变量,减少内存消耗
    if score := 99; score < 100 {
		fmt.Println("分数低于100")
	} else if score == 100 {
		fmt.Println("正好满分")
	} else {
		fmt.Println("分数无效")
	}

--if 示例3:
	s1 := 17
	if s1 >= 18 {
		s2 := "我成年了"
		fmt.Println(s2)
	} else if s1 < 17 {
		fmt.Println("没成年啦 阿sir")
	} else {
		fmt.Println("不论怎么样都要好好学习啦")
	}

--if的特殊写法  ----  变量定义在和条件判断一行:

--特殊写法:变量申明放在条件判断的那一行,这样变量就不能在其他地方使用,但也节约了空间
	if s1 := 17; s1 >= 18 {
		s2 := "我成年了"
		fmt.Println(s2)
	} else if s1 < 17 {
		fmt.Println("没成年啦 阿sir")
	} else {
		fmt.Println("不论怎么样都要好好学习啦")
	}
	fmt.Println(s1)  # 这里由于s1放在条件一行,会报错提示没有定义s1变量

2、for 循环

--go语言中没有其他循环,只有for循环及其变种

--形式1:最基本的
    for i := 0; i < 10; i++ {
		fmt.Println(i)
	}

--形式2:循环变量定义在循环体之外
	i := 0
	for ; i < 10; i++ {
		fmt.Println(i)
	}
	fmt.Println(i)
    // 这种定义的好处是可以拿出最后循环次数,便于进一步处理

--形式3:这种循环的好处是可以在循环体内处理循环的次数
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++
	}
	fmt.Println(i)

--形式4:无限循环
	for{
		fmt.Println("无限循环")
	}
    // for循环可以通过break、goto、return、panic语句强制退出循环

03、for  range:这个就有意思了,只要学过python都能很快明白这个

--这里for range可以遍历数组、切片、字符串、map 及通道(channel)
--通过for range遍历的返回值有以下规律:
    --数组、切片、字符串返回索引和值。
    --map返回键和值。
    --



--代码示例如下:
	// for range循环
	s := "liming沙河"
	for i, v := range s {
		fmt.Printf("%d %c\n", i, v)
	}

************  输出结果  ****************
0 l
1 i
2 m
3 i
4 n
5 g
6 沙  // 注意中文占三个位置
9 河  // 英文占一个位置

04、for 循环终端 break  continue

--代码示例如下:
	for i := 0; i < 15; i++ {
		if i >= 5 {
			break
		}
		fmt.Println("今天是个好天气")
	}
	fmt.Println("over")

******************  break 输出  *******************
今天是个好天气
今天是个好天气
今天是个好天气
今天是个好天气
今天是个好天气
over
--代码示例如下:
	for i := 0; i < 8; i++ {
		if i == 5 {
			continue
		}
		fmt.Printf("今天是个好天气 %d\n", i)
	}
	fmt.Println("over")

****************  continue 示例如下  *******************
今天是个好天气 0
今天是个好天气 1
今天是个好天气 2
今天是个好天气 3
今天是个好天气 4
今天是个好天气 6
今天是个好天气 7
over
--死循环又一案例:这种方式会导致i始终不会超过5,因为被跳过去了导致一直为5
	for i := 0; i < 8;  {
		if i == 5 {
			continue
		}
		fmt.Printf("今天是个好天气 %d\n", i)
		i++
	}
	fmt.Println("over")

05、switch  case

--基础形式的代码示例:
	var n = 6
	switch n {
	case 1:
		fmt.Println("我是大拇指")
	case 2:
		fmt.Println("我是食指")
	case 3:
		fmt.Println("我是中指")
	case 4:
		fmt.Println("我是无名指")
	case 5:
		fmt.Println("我是小拇指")
	default:
		fmt.Println("无效的数字")
	}

--变种形式1:变量定义在switch后面
	switch n := 3; n {
	case 1:
		fmt.Println("我是大拇指")
	case 2:
		fmt.Println("我是食指")
	case 3:
		fmt.Println("我是中指")
	case 4:
		fmt.Println("我是无名指")
	case 5:
		fmt.Println("我是小拇指")
	default:
		fmt.Println("无效的数字")
	}

--变种形式2:case后面加上多个值
    switch n := 3; n {
	case 1, 3, 5, 7, 9:
		fmt.Println("我是奇数")
	case 2, 4, 6, 8, 10:
		fmt.Println("我是偶数")
	default:
		fmt.Println("无效的数字")
	}
    
--变种形式3: case后面接上判断条件
    n := 3
	switch {
	case n < 25:
		fmt.Println("好好学习")
	case n >= 25 && n < 40:
		fmt.Println("好好工作")
	default:
		fmt.Println("享受生活")
	}

--变种形式4: fallthrough 这里不做叙述不用了,go向前兼容不要再写这个语法了
    --fallthrough语法可以执行满足条件的case的下一个case,是为了兼容C语言中的case设计的。
	s := "a"
	switch {
	case s == "a":
		fmt.Println("a")
		fallthrough
	case s == "b":
		fmt.Println("b")
	case s == "c":
		fmt.Println("c")
	default:
		fmt.Println("...")
	}
***************  fallthrough 输出结果  ****************
a
b

06、goto语法

--goto不要再写了,以后也不用了,仅作为了解

--代码示例:关于多层循环的一个实例,break只能退出一层循环
	for i := 0; i < 6; i++ {
		for j := 'A'; j <= 'Z'; j++ {
			if j == 'C' {
				break
			}
			fmt.Printf("%d-%c\n", i, j)
		}
	}
*******************  break基础使用  ********************
0-A
0-B
1-A
1-B
2-A
2-B
3-A
3-B
4-A
4-B
5-A
5-B


--代码示例02:break想要彻底退出需要加标志位
	var flag = false
	for i := 0; i < 6; i++ {
		for j := 'A'; j <= 'Z'; j++ {
			if j == 'C' {
				flag = true
				break
			}
			fmt.Printf("%d-%c\n", i, j)
		}
		if flag {
			fmt.Println("彻底退出")
			break
		}
	}
*******************  break 彻底退出  ********************
0-A
0-B
彻底退出


--代码示例:goto可以到达任意位置,不像break只能退出一层循环
	for i := 0; i < 6; i++ {
		for j := 'A'; j <= 'Z'; j++ {
			if j == 'C' {
				goto XX
			}
			fmt.Printf("%d-%c\n", i, j)
		}
	}
XX:
	fmt.Println("over")
*******************  goto  ********************
0-A
0-B
over

07、99乘法表实现

--

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值