Go-分支和循环总结(if、else、switch、for、range、continue、break等)

目录

分支

if

if...else

if..else if ...else

switch

switch穿透

type-switch

循环

for

for-range

实现while

实现do...while

break

continue

goto

全部代码

分支

循环

截图

分支

循环


分支

if

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */

if 中可以直接定义变量

代码

	age := 0
	_, _ = fmt.Scanln(&age)
	if age > 18{
		fmt.Println("对自己负责")
	}
	if s:="呀";age>18{
		fmt.Println("对自己负责",s)
	}

if...else

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
  /* 在布尔表达式为 false 时执行 */

注意:else不能换行,必须在}后

代码

	_, _ = fmt.Scanln(&age)
	if age > 18{
		fmt.Println("对自己负责")
	} else {
		fmt.Println("年龄不大,放过你了")
	}

if..else if ...else

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else if 布尔表达式{
  /* 在布尔表达式为 true 时执行 */
} else {
 /* 上述分支不满足时执行 */

else if 可以有多个,else可以没有

代码

	if age < 18 {
		fmt.Println("小孩纸~")
	} else if age >= 18 && age < 40{
		fmt.Println("青壮年~")
	}else{
		fmt.Println("不惑")
	}

switch

switch [表达式] {
    case val1[,...]:
        ...
    case val2[,val3,...]:
        ...
    default:
        ...

  • 不需要break
  • val1 和 val2如果是常量,不能相同,val2和val3可以是同类型的任意值,也不能相同,变量的话没问题
  • 为了实现其他语言,例如c++,不加break时,多case,一个结果的情况,一个case后可以加多个
  • 表达式的结果类型要与case的一致,当然case也可以是变量、函数的返回值等
  • switch后可以定义变量,加分号结束(不推荐)
	day := ""
	_, _ = fmt.Scanln(&day)
	switch day{
		case "1":fmt.Println("星期一")
		case "2":fmt.Println("星期二")
		case "6","7":fmt.Println("周末")
		default:
			fmt.Println("懒得写了")
	}

switch穿透

使用关键字fallthrough,会强制执行下一个case,不做判断。不建议,就不举例了。

type-switch

类型断言的时候再举例。

循环

for

for 开始条件;继续条件;循环体后执行语句{

    循环体...

}

代码

	str := "lady_killer9"
	for i:=0;i< len(str);i++{
		fmt.Printf("%c",str[i])
	}

注意:开始条件、继续条件、循环体后执行语句 都是可以省略的,当开始条件及循环体后执行语句都省略时,两个分号也可以省略

for 继续条件{

    循环体...

}

for-range

for key,value := range 变量{

      循环体...

}

注意:循环体用不到key时,可以使用匿名变量接收

代码

	for index,val := range str{
		fmt.Println(index,string(val))
	}

Go中是没有while和do..while的,可以自己实现类型的逻辑。

实现while

for{

if condition{

break

}

do something;

}

代码

	i := 0
	for{
		if i == len(str){
			break
		}
		fmt.Printf("%c",str[i])
		i++
	}

换一种方式

	i = 0
	for i!=len(str){
		fmt.Printf("%c",str[i])
		i++
	}
	fmt.Println()

实现do...while

for{

do something;

if condition{

break

}

}

代码

	j := 0
	for{
		fmt.Printf("%c",str[j])
		j++
		if j == len(str){
			break
		}
	}

break

break可以指明跳出到哪一层使用标签,,默认是本层循环。

label:

    for {

        for{

            ...

           break label

            }

    }

代码

	arr := [2][2]int{{1,2},{3,4}}
	loop:
		for i:=0;i<len(arr);i++{
			for j:=0;j<len(arr[0]);j++{
				fmt.Println(arr[i][j])
				if arr[i][j] == 2{
					break loop
				}
			}
		}

continue

同上,可加label

代码

	loop2:
	for i:=0;i<len(arr);i++{
		for j:=0;j<len(arr[0]);j++{
			fmt.Println(arr[i][j])
			if arr[i][j] == 1{
				continue loop2
			}
		}
	}

goto

直接跳到某个标签处,不推荐

	for i:=0;i<len(arr);i++{
		for j:=0;j<len(arr[0]);j++{
			fmt.Println(arr[i][j])
			if arr[i][j] == 2{
				goto HI
			}
		}
	}
	HI:
		fmt.Println("hi, goto")

全部代码

分支

case.go

package main

import "fmt"

func main() {
	//--------------for---------------
	str := "lady_killer9"
	for i:=0;i< len(str);i++{
		fmt.Printf("%c",str[i])
	}
	fmt.Println()
	//-----------for range------------
	for index,val := range str{
		fmt.Println(index,string(val))
	}
	//-----------实现while-----------
	i := 0
	for{
		if i == len(str){
			break
		}
		fmt.Printf("%c",str[i])
		i++
	}
	fmt.Println()
	//-----------实现do...while...--------
	j := 0
	for{
		fmt.Printf("%c",str[j])
		j++
		if j == len(str){
			break
		}
	}
	fmt.Println()
	//------------label break------------
	fmt.Println("------------label break------------")
	arr := [2][2]int{{1,2},{3,4}}
	loop:
		for i:=0;i<len(arr);i++{
			for j:=0;j<len(arr[0]);j++{
				fmt.Println(arr[i][j])
				if arr[i][j] == 2{
					break loop
				}
			}
		}
	//------------label continue-------------
	fmt.Println("------------label continue-------------")
	loop2:
	for i:=0;i<len(arr);i++{
		for j:=0;j<len(arr[0]);j++{
			fmt.Println(arr[i][j])
			if arr[i][j] == 1{
				continue loop2
			}
		}
	}
	//----------label goto-------------------
	fmt.Println("----------label goto-------------------")
	for i:=0;i<len(arr);i++{
		for j:=0;j<len(arr[0]);j++{
			fmt.Println(arr[i][j])
			if arr[i][j] == 2{
				goto HI
			}
		}
	}
	HI:
		fmt.Println("hi, goto")
}

循环

for.go

package main

import "fmt"

func main() {
	//--------------for---------------
	str := "lady_killer9"
	for i:=0;i< len(str);i++{
		fmt.Printf("%c",str[i])
	}
	fmt.Println()
	//-----------for range------------
	for index,val := range str{
		fmt.Println(index,string(val))
	}
	//-----------实现while-----------
	i := 0
	for{
		if i == len(str){
			break
		}
		fmt.Printf("%c",str[i])
		i++
	}
	fmt.Println()
	i = 0
	for i!=len(str){
		fmt.Printf("%c",str[i])
		i++
	}
	fmt.Println()
	//-----------实现do...while...--------
	j := 0
	for{
		fmt.Printf("%c",str[j])
		j++
		if j == len(str){
			break
		}
	}
	fmt.Println()
	//------------label break------------
	fmt.Println("------------label break------------")
	arr := [2][2]int{{1,2},{3,4}}
	loop:
		for i:=0;i<len(arr);i++{
			for j:=0;j<len(arr[0]);j++{
				fmt.Println(arr[i][j])
				if arr[i][j] == 2{
					break loop
				}
			}
		}
	//------------label continue-------------
	fmt.Println("------------label continue-------------")
	loop2:
	for i:=0;i<len(arr);i++{
		for j:=0;j<len(arr[0]);j++{
			fmt.Println(arr[i][j])
			if arr[i][j] == 1{
				continue loop2
			}
		}
	}
	//----------label goto-------------------
	fmt.Println("----------label goto-------------------")
	for i:=0;i<len(arr);i++{
		for j:=0;j<len(arr[0]);j++{
			fmt.Println(arr[i][j])
			if arr[i][j] == 2{
				goto HI
			}
		}
	}
	HI:
		fmt.Println("hi, goto")
}

截图

分支

循环

更多Go相关内容:Go-Golang学习总结笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lady_killer9

感谢您的打赏,我会加倍努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值