Go语言笔记(二)

流程控制

流程控制的作用

流程控制语句是用来在控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

控制语句的分类:

  1. 顺序结构
  2. 分支结构
  3. 循环结构

分支结构

if分支

if单分支

条件表达式左右的()括号可省略:

if 条件表达式{
    逻辑代码
}

PS:在Golang里if后面可以并列的加入变量的定义

if count :=20;count < 20{
    fmt.Println("aaaaa")
}

if双分支

if 条件表达式{
    逻辑代码1
} else {
    逻辑代码2
}

if多分支

if 条件表达式{
    逻辑代码1
} else if {
    逻辑代码2
} else if {
    逻辑代码3
} else {
    逻辑代码4
}

switch分支

基本语法

switch 表达式{
    case 值1,值2,....:
	语句块1
    case 值3,值4,....:
	语句块2
    default:
 	语句块
}

注意事项

  • switch后面是一个表达式(即:常量值、变量、一个有返回值的函数)
  • case后面的值如果是常量值(字面量)。则要求不能重复
  • case后面的各个值的数据类型,必须和switch的表达式数据类型一致。
  • case后面带多个值,使用逗号间隔。case 值1,值2,....
  • case后面不需要break
  • default语句不是必须,位置也是随意的。
  • switch后面可以不带表达式,当做if分支来使用
switch{
    case a == 1:
        fmt.Println("aaa")
    case a == 2:
        fmt.Println("bbb")
}
  • switch后也可以直接声明/定义一个变量,分号结束
  • switch穿透,利用fallthrough关键字,如果在case语句块后增加fallthrough,则会执行下一个case,也叫switch穿透。

循环结构

语法结构

for 初始表达式;布尔表达式;迭代因子 {
    循环体;
}

注意事项

  • for的初始表达式,不能使用var a int = 10,可使用:=
  • 格式灵活
    i := 1
    for i <= 5 {
        fmt.Println("你好,Golang")
        i++
    }
  • 死循环
    for{
        fmt.Println("你好,Golang")
        i++
    }
    for ;;{
        fmt.Println("你好,Golang")
        i++
    }

for range

  • for range结构是Go语言特有的一种迭代结构。在许多情况下都非常有用,for range可以遍历数组、切片、字符串、map及通道,for range 语法上类似于其他语言中的foreach余元。一般形式为:
for key,val := range coll{
    ...
}
    //方式一:普通for循环:按照字节进行遍历输出(暂不用中文)
    var str string = "helllo golang"
    for i := 0; i < len(str); i++ {
        fmt.Printf("%c\n", str[i])
    }
    //方式二:for range支持中文
    for i , value := range str{
        fmt.Printf("索引为:%d,具体的值为:%c \n",i,value)
    }
    //对str进行遍历,遍历的每个结果的索引值被i接收,每个结果的具体数值被value接收
    //遍历对字符进行遍历

关键字

关键字 break

  • switch分支中,每个case分支后都用break结束当前分支,但是在go语言中break可省略不写
  • break可以结束正在执行的循环
  • break的作用是离它最近的循环
  • 标签的使用效果
label1:
for i:=1;i<=5;i++ {
	for j:=2;j<=4;j++ {
		fmt.Printf("i: %v,j:%v\n",i, j)
		if i==2&& j== 2 {
			break label1
		}
	}
}

注意:如果标签没使用的话则不用定义。

关键字 continue

for i:=1; i<= 100;i++ {
	if i % 6 != 0 {
		continue  //结束本次循环,继续下一个循环
	}
	fmt.Println(i)
}
  • continue的作用就是结束离它进的那个循环,继续离他近的那个循环
  • 标签也可以同样在continue中使用
label1:
for i:=1;i<=5;i++ {
	for j:=2;j<=4;j++ {
		if i==2 && j== 2 {
			continue label1
		}
                fmt.Printf("i: %v,j:%v\n",i, j)
	}
}

关键字 goto

  • 提供语法,但不建议使用
  • 一般都配合条件结构一起使用
fmt.Println("hello golang1")
fmt.Println("hello golang2")
if 1 == 1 {
	goto label1
}
fmt.Println("hello golang3")
fmt.Println("hello golang4")
fmt.Println("hello golang5")
fmt.Println("hello golang6")
fmt.Println("hello golang7")
label1:
fmt.Println("hello golang8")
fmt.Println("hello golang9")

关键字 return

  • 在方法和函数中使用较多
  • 用于结束当前函数
for i := 1; i <= 100 ; i++ {
	fmt.Println(i)
	if i == 14 {
		return  // 结束当前的函数,下面的hello golang不执行
	}
}
fmt.Printf("hello golang")
# Go入门  

评论

公众号:mumuser

企鹅群:932154986

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×