Golang学习+深入(六)-程序流程控制

目录

一、概述

1、顺序控制

2、分支控制

2.1、if分支控制

2.2、switch分支控制

3、循环控制

1、for循环控制

2、while和do...while的实现

3、多重循环控制

跳转控制语句

1、跳转控制语句-break

2、跳转控制语句-continue

3、跳转控制语句-goto

4、跳转控制语句-return


一、概述

三大流程控制语句

1、顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转。

Golang中定义变量时采用合法的向前引用。(先定义后引用,不能先引用后定义。)

2、分支控制

2.1、if分支控制

1、单分支

基本语法:
if 条件表达式 {
    代码块
}
说明:条件表达式为true,就会执行{}的代码
注意{}是必须有的就算只写一行代码。
Go的if还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。
	if age :=20; age>18 {
		fmt.Println("age=",age)
	}

2、双分支

基本语法:
if 条件表达式 {
    代码块1
} else {
    代码块2
}
说明:{}必须有的。

3、多分支

基本语法:
if 条件表达式 {
    代码块1
} else if 条件表达式{
    代码块2
}
....
} else {
    代码块n
}
说明:{}必须有的。

4、嵌套分支

一个分支语句中嵌套了另一个分支语句。嵌套分支不宜过多,建议控制在3层内。

2.2、switch分支控制

  1. switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,直到匹配为止。
  2. 匹配项后面也不需要再加break,case后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出switch,如果一个都匹配不到,则执行default。
  3. case后的各个表达式的值的数据类型,必须和switch的表达式数据类型一致。
  4. default语句不是必须有的。
  5. switch后可以不带表达式,类似if-else分支来使用
  6. switch后也可以直接声明一个变量,分号结束,不推荐使用。
  7. switch穿透fallthrough,如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透。fallthrough默认只能穿透一层。
  8. Type switch:switch语句还可以被用于type-switch来判断某个interface变量中实际指向的变量类型。
switch 表达式 {
case 表达式1,表达式2,....:
    语句块1
case 表达式3,表达式24,....:
    语句块2
.....
default:
    语句块n
}
package main
import (
	"fmt"
)
func main() {
	var x interface{}
	var y = 10.0
	x = y
	switch i := x.(type) {
	case nil:
		fmt.Println("x的类型%T",i)
	case int:
		fmt.Println("x是 int 型")
	case float64:
		fmt.Println("x是 float64 型")
	case func(int) float64:
		fmt.Println("x是 func(int) 型")
	case bool,string:
		fmt.Println("x的类型%T",i)
	default:
		fmt.Println("未知类型")
	}
}

3、循环控制

1、for循环控制

基本语法:
方式1:循环条件是返回一个布尔值的表达式
for 循环变量初始化;循环条件;循环变量迭代 {
    循环操作体
}
方式2:变量初始化和变量迭代写到其他地方
for 循环条件 {
    循环操作体
}
方式3:等价for ; ;{}是一个无限循环,通常需要配合break语句使用
for {
    循环操作体
}

方式4:for-range遍历字符串和数组
str :="hello world!"
for index,val := range str {
    fmt.Printf("index=%d val=%c\n",index,val)
}
for-range遍历字符串时,是按照字符来遍历的,而不是按照字节来的。

2、while和do...while的实现

Go语言没有while和do...while的实现,使用for循环来实现的。

1、for循环实现while的效果
for {
    if 循环条件表达式 {
        break//跳出for循环
    }
    循环操作体
    循环遍历迭代
}
2、for循环实现do...while的效果
for {
    循环操作体
    循环遍历迭代
    if 循环条件表达式 {
        break//跳出for循环
    }
}
//先执行,后判断,因此至少执行一次。

3、多重循环控制

  1. 将一个循环放在另一个循环体内,就形成了嵌套循环。建议一般使用2层,最多不要超过3层。
  2. 嵌套循环就是把内层循环当成外层循环的循环体
  3. 外层循环次数m次,内层循环n次,则内层循环体实际上要执行m*n=mn次
//打印空心金字塔
//空格数量=总层数-当前层数
//每层*数量=2*层数-1
package main
import (
	"fmt"
)
func main() {
	var totalLevel int =10
	for i := 1; i <= totalLevel; i++ {
		for j :=1; j<=totalLevel -i; j++{
			fmt.Print(" ")
		}
		for k := 1; k <= 2*i-1; k++{
			if k == 1 || k==2*i-1 || i == totalLevel{
				fmt.Print("*")
			}else{
				fmt.Print(" ")
			}
		}
		fmt.Println()
	}
}
//打印九九乘法表
package main
import (
	"fmt"
)
func main() {
	for i:=1;i<=9;i++{
		for j:=1;j<=i;j++{
			fmt.Printf("%v * %v = %v \t",j,i,i*j)
		}
		fmt.Println()
	}
}

跳转控制语句

1、跳转控制语句-break

  1. break语句用于终止某个语句块的执行,用于中断当前for循环或跳出switch语句。
  2. break语句出现在多层嵌套语句块时,可以通过标签指明要终止的是哪一层语句块
  3. break 默认跳出最近的for循环
  4. break 后面指定标签,跳出标签对应的for循环
标签的基本使用
    label1:{
        label2:{
            label3:{
                    break label2
                    }
               }
          }
======================================
package main
import (
	"fmt"
)
func main() {
	label:
	for i := 0;i < 4;i++{
		for j := 0;j < 10;j++{
			if j == 2 {
				break label
			}
			fmt.Println("j=",j)
		}
	}
}

2、跳转控制语句-continue

  1. continue语句用于结束本次循环,继续执行下一次循环。
  2. continue语句出现在多层嵌套的循环语句体中,可以通过标签指明要跳过的是哪一层循环,这个和前面标签使用规则一样。

3、跳转控制语句-goto

  1. Go语言的goto语句可以无条件地转移到程序中指定的行。
  2. goto语句通常与条件语句配合使用。可用来实现条件转移,跳出循环体等功能。
  3. 在Go程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难
基本语法:
goto label
....
label:statement
====================================
package main
import (
	"fmt"
)
func main() {
	var i = 1
	fmt.Println(1)
	fmt.Println(2)
	fmt.Println(3)
	goto label1
	fmt.Println(4)
	label1:
	fmt.Println(5)
	fmt.Println(6)
	label2:
	fmt.Println(7)
	fmt.Println(8)
	if i==1{
		i++
		goto label2
	}
	fmt.Println(9)
}

4、跳转控制语句-return

  1. return使用在方法或者函数,表示跳出所在的函数或方法。
  2. 如果return是在普通的函数,则表示跳出该函数,即不再执行函数中return后面的代码,也可以理解为终止函数。
  3. 如果return是在main函数,表示终止main函数,也就是说终止程序

Golang学习+深入(七)-函数

干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Golang(又称Go)是一种静态类型,编译型,开源的编程语言,它以简洁、高效、并发和可靠著称。学习Golang主要包括以下几个步骤。 1. 学习基本语法:首先,要理解Golang的基本语法,包括变量、函数、数据类型、运算符、流程控制等。可以通过在线教程、书籍或官方文档来学习。 2. 熟悉标准库:Golang提供了丰富的标准库,包括各种常用功能,如字符串处理、文件操作、网络编程等。熟悉标准库可以帮助我们更快地编写高效的代码。 3. 学习并发编程:Golang天生支持并发编程,通过goroutine和channel可以实现高效的并发操作。学习并发编程可以帮助解决高并发场景下的问题,提升程序性能。 4. 掌握常用框架和工具:Golang有许多优秀的框架和工具,如Gin、Beego、Echo等。这些框架和工具可以帮助提高开发效率,快速搭建应用。 5. 实践项目:通过实践项目来巩固所学知识,可以选择一些小型的项目开始,逐渐挑战更复杂的项目。通过实践不断提升编程技能和解决问题的能力。 6. 加强算法和数据结构的学习:算法和数据结构是编程的基础,深入学习并理解常见的算法和数据结构是提升编程能力的重要一步。 总结起来,学习Golang的顺序应该是先学习基本语法,然后掌握标准库,学习并发编程,掌握常用框架和工具,实践项目,最后加强算法和数据结构的学习。此外,持续积累编程经验和不断学习新技术也是非常重要的。 ### 回答2: 学习Golang的顺序可以分为四个主要步骤。 1. 学习基本语法和数据类型 首先,要学习Golang的基本语法和数据类型。了解如何声明变量、使用条件语句、循环和函数等基本概念。掌握Golang中的数据类型包括整数、浮点数、字符、字符串、数组、切片、映射、结构体等。理解它们的特点和用法是学习Golang的基础。 2. 掌握面向对象编程 Golang支持面向对象编程,要学习如何使用结构体和方法定义和组织代码。学习如何创建结构体类型和使用方法来处理结构体实例。了解封装、继承和多态的概念,并学会如何在Golang中实现它们。 3. 学习并发编程 Golang是为并发编程而生的语言,学习并发编程是使用Golang的重要一步。了解Golang的并发原语,例如goroutine和通道。掌握如何创建和管理goroutine,并学会使用通道进行不同goroutine之间的通信和同步。理解并发编程的基本概念和常见问题,例如竞态条件和死锁,并学习如何解决它们。 4. 深入学习标准库和其它常用包 最后,要深入学习Golang的标准库和其它常用包。Golang拥有丰富的标准库,涵盖了许多领域,包括网络编程、文件处理、数据库操作等。学习如何使用标准库中提供的功能来解决实际问题。此外,还可以学习一些常用的第三方库,以扩展Golang的功能和效率。 总结起来,学习Golang的顺序是:基本语法和数据类型 -> 面向对象编程 -> 并发编程 -> 标准库和其它常用包。通过有序的学习,可以逐步掌握Golang的核心概念和技术,为实际项目的开发做好准备。 ### 回答3: 学习Golang的顺序可以分为以下几个步骤: 1. 学习基本语法:首先要了解Golang的基本语法规则,包括变量、常量、数据类型、函数、控制流等。可以通过阅读官方文档、在线教程或者参考书籍来学习。 2. 理解并发编程:Golang是以并发为核心设计的编程语言,支持轻量级的线程(Goroutine)和通信(Channel)机制。学习并发编程的原理和技巧,包括Goroutine的创建和调度、Channel的使用、互斥锁和条件变量等。 3. 掌握标准库:Golang提供了丰富的标准库,涵盖了文件处理、网络编程、数据解析、加密解密等各个方面。学习并熟悉标准库的使用,可以提高开发效率和代码质量。 4. 学习常用框架和工具:Golang有许多优秀的第三方框架和工具可供使用,如Web开发框架Gin、数据库ORM框架GORM、测试框架Testify等。选择合适的框架和工具,可以提高开发效率和性能。 5. 实践项目:通过实际项目的练习,将所学知识应用到实际中,加深理解和巩固技能。可以选择一些简单但实用的项目,逐渐挑战更复杂的需求。 6. 阅读优秀的开源代码:阅读和理解一些优秀的开源项目代码,可以提高自己的编程水平和技术见识。可以选择一些知名的开源项目,如Docker、Kubernetes等。 总之,学习Golang需要循序渐进,从基础语法开始,逐步深入学习并发编程、标准库、框架和工具的使用,同时注重实践项目和阅读开源代码。通过不断学习和练习,可以掌握Golang的使用技巧,提升自己的编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值