Golang - 5 Golang的流程控制:if/else、for、switch

发布时间 2023-04-26 19:19:18作者: Duosg

5 流程控制

1 if/else

1.1 语法

	// 基本形式

  if 条件1 {
		
	}else 条件2 {
		
	}else {
		
	}
  • 多个分支
age := 99
if age>=80 {
   fmt.Println("耄耋老人")
}else if age>=70 && age<80 {
   fmt.Println("古稀老人")
}else {
   fmt.Println("花甲或者其他")
}

2 for

在golang中,只提供了for来进行循环,没有while等,但是可以通过别的写法来实现while的功能

2.1 语法

for 初始表达式;条件表达式;迭代表达式 {
  // do something
}

// 例如:
for i:=0;i<5;i++{
	fmt.Println(i)
}

2.2 简单写法与实现while的功能

(1)省略掉第一部分【分号不能省】

i:=0
for ;i<5;i++{
	fmt.Println(i)
}

(2)省略掉第三部分【分号不能省】

for i:=0;i<5;{
   fmt.Println(i)
   i++
}

(3)实现while功能:省略第一部分和第三部分

	i:=0
	for i<5{
		fmt.Println(i)
		i++
	}

(4)死循环

i:=0
for true {
   fmt.Println(i)
   i++
}

image-20230426171955493

瞬间打了124万条数据

2.3 基于迭代的循环、基于索引的循环

  • 基于索引的循环

	for i,j :=1,10;i<=10; i,j= i+1,j-1{
		fmt.Println("i",i)
		fmt.Println("j",j)
	}
  • 基于迭代的循环

    这样循环取到的是字符,而如果基于索引循环,取得的是字节

	s:="xfq小番茄"
 	for i,v:=range s{
 		fmt.Println(i)
 		fmt.Println(string(v))
	}

3 switch

switch是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块,优雅的替换else-if

3.1 switch的基本使用

  • switch 后面的表达式不需要括号
  • case 语句块执行完会自动退出整个 switch 语句块,也就是不需要使用 break 显式声明
  • case 语句快执行完后,如果希望继续向下执行,可以使用关键字 fallthrough, 这样就和其他编程语言不加 break 效果一样了
switch expr {
  case v1:
  		...
  case v2:
  		...
  case v3, v4, v5:  // 可以同时测试多个可能符合条件的值
  		...
  default:
   		...
}

3.2 各种形式

① 普通表达式

score:=90
switch score {
case 90:
   fmt.Println("90")
case 80:
   fmt.Println("80")
default:
   fmt.Println("默认值")
}

② 省略expr表达式

score:=90
switch  {
case score>200:
	fmt.Println("比200大")
case score==200:
	fmt.Println("等于200")
case score<200:
	fmt.Println("比200小")
default:
	fmt.Println("默认值")
}
// 比200小

③ fallthrough

fallthrough表示当符合当前条件后,会无条件执行下一条语句

score:=200

switch  {
case score>200:
   fmt.Println("比200大")
case score==200:
   fmt.Println("等于200")
   fallthrough
case score<200:
   fmt.Println("比200小")
   fallthrough
default:
   fmt.Println("默认值")
}
====
等于200
比200小
默认值