Go语言学习之流程控制|Go主题月

219 阅读3分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之列表的使用|Go主题月

  • 列表的定义
  • 列表的声明方式
  • 在列表中插入元素
  • 在列表中删除元素
  • 遍历列表-访问列表的每一个元素

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言学习之流程控制

2.流程控制的定义

在Go语言中常用的流程控制有iffor,而switchgoto主要是为了简化代码。

另外还有循环控制语句(breakcontinue),

  • 前者的功能是中断循环或者跳出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")
   }
   }

输出为:

image.png

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")
   }
   }

输出为:

image.png

2.使用else if语句

在大多情况下,需要依次判断多个表达式,此时可使用else if语句。

else if语句能够在前面的ifelse 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")
   }
   }

输出为:

image.png

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")
   }
   }

输出为:

image.png

代码中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)
   }
}

输出为:

image.png

2.包含range子句的for语句

for语句也可用来遍历数据结构。 在Go语言中可以使用range子句的for语句来遍历大多数数据结构,如 数组切片字符串map通道,且无须知道数据结构的长度。

1.遍历数组、切片

Go语言利用range语句遍历数组、切片的时候,格式如下:

for key,value:=range []类型{数值} {
遍历语句
}

Keyvalue分别代表数组切片的下标与下标对应的每一个值

具体代码如下面案例所示:

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)
   }
}

输出为:

image.png

2.遍历字符串

Go语言利用range语句遍历字符串的时候,格式如下:

for key,value:=range str{
遍历语句
}

Keyvalue分别代表字符串的索引与字符串的每一个字符

具体代码如下面案例所示:

package main

import "fmt"

func main(){
   str:="Hello World!value"
   for key,value:=range str{
      fmt.Printf("第%v个元素为%c\n",key+1,value)
   }
}

输出为:

image.png

3.遍历map

Go语言利用range语句遍历的时候,格式如下:

for key,value:=range map{
遍历语句
}

Keyvalue分别代表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)
   }
}

输出为:

image.png

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)
   
   }
}

输出为:

image.png

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("你好世界")

   }
}

输出为:

image.png

2.一分支多值

当出现多个case需要放在一起的时候,代码可以像下面案例一样表达:

package main

import "fmt"

func main(){
   a:="Hello World"
   switch a{
   case "Hello","Hello World":
      fmt.Println("你好世界")
      
   }
}

输出为:

image.png

3.分支表达式

Case后面不仅仅只是常量,还可以和if一样添加表达式 但是这种情况下switch后面不再跟判断变量。

具体代码如下案例所示:

package main

import "fmt"

func main(){
   input:=10
   switch {
   case input>5 && input<15:
      fmt.Println("你好世界")
   }
}

输出为:

image.png

6.使用defer语句

defer语句能够帮助开发者在函数返回前执行另一个函数。

具体代码如下案例所示:

package main

import "fmt"

func main(){

   defer fmt.Println("你好世界")
   fmt.Println("Hello World!")

}

输出为:

image.png

这段代码中使用了一个defer语句,

  • 这串代码功能是先实现了Hello World!输出后,
  • 才实现defer所在的你好世界语句输出。

7.使用break语句

使用该语句可以直接结束forswitch等循环的代码块。

具体代码如下案例所示:

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)
}

输出为:

image.png

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)
}

输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。