作者:看那个码农
公众号:看那个码农
上期内容介绍了Go语言学习之列表的使用|Go主题月
- 列表的定义
- 列表的声明方式
- 在列表中插入元素
- 在列表中删除元素
- 遍历列表-访问列表的每一个元素
本篇内容将继续带领大家走进Go语言的世界。
1.本文简介
Go语言学习之流程控制
2.流程控制的定义
在Go语言中常用的流程控制有if和for,而switch与goto主要是为了简化代码。
另外还有循环控制语句(break和continue),
- 前者的功能是中断循环或者跳出
switch判断。 - 后者的功能是继续
for的下一个循环。
下面我们就来看看它们的用法。
3.使用if语句
在Go语言中,可以使用if关键词进行条件判断,格式如下:
if表达式{
分支1
}else if{
分支2
}else{
分支3
}
if语句是计算机程序的重要组成部分,几乎所有的语言都这条语句。
简单来说,if语句用来检查指定的条件,并在条件满足时候执行相应的代码操作。
具体如下面的代码所示:
package main
import "fmt"
func main(){
b:=true
if b{
fmt.Println("b is true")
}
}
输出为:
1.使用else语句
在Go语言中else语句紧跟在其它语句的大括号后面,通常是当前块的最后一条语句。
简单来说,如果if语句中,其它条件都不为true,就执行else后面的这条语句。
我们在if语句中加入一个分支后,具体代码实现如下:
package main
import "fmt"
func main(){
b:=false
if b{
fmt.Println("b is true")
}else{
fmt.Println("b is false")
}
}
输出为:
2.使用else if语句
在大多情况下,需要依次判断多个表达式,此时可使用else if语句。
else if语句能够在前面的if或else if语句为false时候,进行执行。
具体代码如下面的案例所示:
package main
import "fmt"
func main(){
i:=2
if i==3{
fmt.Println("i is 3")
}else if i==2{
fmt.Println("i is 2")
}
}
输出为:
3.if语句的特殊写法
if语句还有一种特殊的写法,可以在if表达式之前添加一个执行语句,再根据变量值进行判断。
如下面的代码案例所示:
package main
import "fmt"
func main(){
if i:=2;i==3{
fmt.Println("i is 3")
}else if i==2{
fmt.Println("i is 2")
}
}
输出为:
代码中if i:=2;i==3
i:=2为执行语句i==3才是真正的判断语句
4.使用for语句
Go语言中的所有循环可以使用for关键词来完成
基本for循环语句的格式如下:
`for` 初始语句;条件表达式;结束语句{
循环体代码
}
循环体代码不断地执行,直到条件表达式返回false时就自动退出循环
1.一个for循环的例子
具体代码如下面案例所示:
package main
import "fmt"
func main(){
for i:=0;i<10;i++{
fmt.Println("i is",i)
}
}
输出为:
2.包含range子句的for语句
for语句也可用来遍历数据结构。
在Go语言中可以使用range子句的for语句来遍历大多数数据结构,如
数组、切片、字符串、map及通道,且无须知道数据结构的长度。
1.遍历数组、切片
Go语言利用range语句遍历数组、切片的时候,格式如下:
for key,value:=range []类型{数值} {
遍历语句
}
Key和value分别代表数组、切片的下标与下标对应的每一个值
具体代码如下面案例所示:
package main
import "fmt"
func main(){
number:=[]int{1,2,3,4}
for i,n:=range number{
fmt.Printf("第%v个元素为%v\n",i+1,n)
}
}
输出为:
2.遍历字符串
Go语言利用range语句遍历字符串的时候,格式如下:
for key,value:=range str{
遍历语句
}
Key和value分别代表字符串的索引与字符串的每一个字符
具体代码如下面案例所示:
package main
import "fmt"
func main(){
str:="Hello World!value"
for key,value:=range str{
fmt.Printf("第%v个元素为%c\n",key+1,value)
}
}
输出为:
3.遍历map
Go语言利用range语句遍历的时候,格式如下:
for key,value:=range map{
遍历语句
}
Key和value分别代表map的索引键与索引对应的每一个字符。
具体代码如下面案例所示:
package main
import "fmt"
func main(){
m :=map[string]int{
"Hello":1,
"World":2,
}
for key,value:=range m{
fmt.Printf("%v索引对应的值为%v\n",key,value)
}
}
输出为:
5.使用switch语句
switch语句可以理解为一种批量的if语句,使用该语句可以方便地对大量的值进行判断操作。不仅提高了代码的可读性,还能提高不少操作性能。
具体代码如下面案例所示:
package main
import "fmt"
func main(){
a:="Hello"
switch a{
case "Hello":
fmt.Println(1)
case "hello":
fmt.Println(2)
case "World":
fmt.Println(3)
}
}
输出为:
1.在switch语句中添加default case
在switch语句中,可使用关键词default来指定其它case条件都不满足时要执行的代码。
default代码一般switch语句末尾,但是也可以放在任何其它地方。
具体代码如下案例所示:
package main
import "fmt"
func main(){
a:="Hello World"
switch a{
case "Hello":
fmt.Println(1)
case "hello":
fmt.Println(2)
case "World":
fmt.Println(3)
default:
fmt.Println("你好世界")
}
}
输出为:
2.一分支多值
当出现多个case需要放在一起的时候,代码可以像下面案例一样表达:
package main
import "fmt"
func main(){
a:="Hello World"
switch a{
case "Hello","Hello World":
fmt.Println("你好世界")
}
}
输出为:
3.分支表达式
Case后面不仅仅只是常量,还可以和if一样添加表达式 但是这种情况下switch后面不再跟判断变量。
具体代码如下案例所示:
package main
import "fmt"
func main(){
input:=10
switch {
case input>5 && input<15:
fmt.Println("你好世界")
}
}
输出为:
6.使用defer语句
defer语句能够帮助开发者在函数返回前执行另一个函数。
具体代码如下案例所示:
package main
import "fmt"
func main(){
defer fmt.Println("你好世界")
fmt.Println("Hello World!")
}
输出为:
这段代码中使用了一个defer语句,
- 这串代码功能是先实现了
Hello World!输出后, - 才实现defer所在的
你好世界语句输出。
7.使用break语句
使用该语句可以直接结束for、switch等循环的代码块。
具体代码如下案例所示:
package main
import "fmt"
func main(){
node:=0
for a:=4;a>0;a--{
node++
fmt.Printf("第%v次遍历的元素为:%v\n",node,a)
break
}
fmt.Printf("break遍历结束,for循环执行了%v次",node)
}
输出为:
8.使用continue语句
使用该语句可以结束当前循环,开始下一次的循环迭代过程,仅限在for循环中使用。
具体代码的案例如下:
package main
import "fmt"
func main(){
node:=0
for a:=4;a>0;a--{
node++
fmt.Printf("第%v次遍历的元素为:%v\n",node,a)
continue
}
fmt.Printf("break遍历结束,for循环执行了%v次",node)
}
输出为:
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。