【Go】二、Go流程控制

这篇具有很好参考价值的文章主要介绍了【Go】二、Go流程控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go流程控制

1、条件语句IF

1、简单格式(不支持三目运算符)
if 布尔表达式 {
  // 执行语句
}
2if里面包含多个表达式的时候,使用‘;’隔开

2、条件语句switch

1、var1可以是任何类型,value1和value2可以是同类型的人和值
switch var1 {
  case value1:
  	xxx
  case value2:
  	xxx
  default:
  	yyy
}

1、Type Switch

​ switch还可以被用于type-switch来判断某个interface变量中实际存储的变量类型

switch x.(type) {
  case type:
  	statement(s)
  case type:
	  statement(s)
  default:
	  statement(s)
}

3、条件语句select

​ select语句类似switch语句,但select会随机执行一个可运行的case,如果没有case可运行,它将阻塞,直到有case可运行。

select {
	case communication clause :
  	statement(s)
  case communication clause :
  	statement(s)
  default:
  	statement(s)
}

// 解释:每个case必须是一个通信,所有的channel表达式都会被求值,所有被发送的表达式都会被求值,
// 1、如果任意某个通信可以执行,就执行,其余忽略
// 2、如果有多个case可以执行,select随机且公平的选出一个执行
// 3、否则:如果有default语句,执行;没有default,select将阻塞,直到某个通信可以运行,Go不会重新对Channel或值进行求职

1、golang select的使用以及典型用法

1、基本使用:

​ 用于处理异步IO操作,select会监听case语句中的channel的读写操作,当case中channel读写操作为非阻塞状态,将触发相应的动作。(case语句必须是channel操作

2、典型用法:

​ 1)超时判断

//比如在下面的场景中,使用全局resChan来接受response,如果时间超过3S,resChan中还没有数据返回,则第二条case将执行
var resChan = make(chan int)
// do request
func test() {
    select {
    case data := <-resChan:
        doData(data)
    case <-time.After(time.Second * 3):
        fmt.Println("request time out")
    }
}

func doData(data int) {
    //...
}

​ 2)退出

//主线程(协程)中如下:
var shouldQuit=make(chan struct{})
fun main(){
    {
        //loop
    }
    //...out of the loop
    select {
        case <-c.shouldQuit:
            cleanUp()
            return
        default:
        }
    //...
}

//再另外一个协程中,如果运行遇到非法操作或不可处理的错误,就向shouldQuit发送数据通知程序停止运行
close(shouldQuit)

​ 3)判断channel是否阻塞

//在某些情况下是存在不希望channel缓存满了的需求的,可以用如下方法判断
ch := make (chan int, 5)
//...
data:=0
select {
case ch <- data:
default:
    //做相应操作,比如丢弃data。视需求而定
}

4、循环语句for

for init; condition; post {}
for condition {}
for {}

// 解释:1)init一般为赋值表达式,给控制变量赋初始值;2)condition:关系表达式或逻辑表达式,循环控制条件;3)post:一般为赋值表达式,给控制变量增量或减量
// 执行流程:判别赋值表达式init是否满足condition给定的条件,若为真,则执行循环语句,然后执行post,进入第二轮循环

5、循环语句range

for key, value := range oldMap {
  newMap[key] = value
}

for 和 for range 有什么区别?

1、使用场景:

​ 1)for可以遍历array、slice、key为整形递增的map、string

​ 2)for range 可以完成for所有事情,却能做for不能做的事情,包括遍历key为string类型的map、遍历channel文章来源地址https://www.toymoban.com/news/detail-449340.html

6、循环控制goto、break、…

Goto、Break、Continue
1、三个语句都可以配合标签(label)使用
2、标签名区分大小写,定义后若不是用会造成编译错误
3continuebreak配合标签(label)可以用于多层循环跳出
4goto调整执行位置,与continuebreak配合标签(label)的结果并不相同

到了这里,关于【Go】二、Go流程控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP8条件控制语句-PHP8知识详解

    我们昨天说了流程控制的结构有顺序结构、选择结构和循环结构。选择结构就是条件结构。 条件控制语句就是对语句中不同条件的值进行判断,进而根据不同的条件执行不同的语句。 在本文中,学习的是if语句、if…else语句、if…elseif语句和switch语句。 1、if语句 if语句是最为

    2024年02月14日
    浏览(58)
  • 探索Python条件语句的奇妙世界:解密逻辑与控制流

    Python的条件语句用来根据特定的条件决定程序的执行流程。它允许程序根据条件的真假执行不同的代码块,从而实现不同情况下的不同操作。条件语句使程序能够根据特定条件进行逻辑判断和选择性的控制,从而增强了程序的灵活性和可扩展性。那么今天将由我来带大家进入

    2024年02月12日
    浏览(75)
  • Python条件控制和循环语句(if while for )

    同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。 while+else whlie+break break跳出本层循环的含义 标志位的使用 while+continue 死循环: 程序中坚决不能出现死循环 for循环不会出现死循环,它的循环条件不是我们来控制,是人家内部已经控制好了 for循环和while循环都是

    2024年02月11日
    浏览(48)
  • Go-新手速成-流程语句

    Go的if不建议写(),over Go摈弃了while和do while 循环,因为他做到了极简(也不要括号) 这么写可以 这也写相当于while(true)了 这不就是while(i3)  

    2024年02月16日
    浏览(36)
  • 入门篇-其之九-流程控制之条件判断

    本文中使用到的工具是Intellij IDEA和JDK 8,需要安装两款工具的请查看这两篇教程:点我查看安装JDK8/11/17教程、点我查看安装Intellij IDEA教程。 前面我们写过的代码,都是在 main 方法中自上到下按顺序执行的,举一个代码栗子: 这段代码就是先定义西瓜的单价、再定义西瓜的重

    2024年02月05日
    浏览(37)
  • c#笔记-流程控制语句

    为了展示流程控制的作用,需要每次执行程序时都使用不一样的值。 无论是每次都修改源码,还是从控制台读取输入都太麻烦了。 所以使用随机数进行测试。 随机数的使用方式如下,使用随机数类,获取一个默认的随机数工具,然后用这个工具生成随机数。 1 变量储存值而

    2024年02月05日
    浏览(45)
  • [MySQL]流程控制语句

    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17991087 出自【进步*于辰的博客】 参考笔记三,P32.5。 目录 1、选择语句 1.1 if 1.2 case 1.2.1 形式一 1.2.2 形式二 2、循环语句 2.1 while 2.2 repeat 2.3 loop 最后 用于测试的数据表:

    2024年02月19日
    浏览(34)
  • MySQL-流程控制语句

    Ⅰ、分支结构-If ​ ①不同的表达式对应不同的操作 ​ ② 使用在begin end中 ​ ③语法定义: Ⅱ、分支结构-case ​ ①类似与 Java 中 if···esle if···else·· ​ ②类似于 Java 中 switch 语句 ​ ③语法: Ⅰ、循环结构-loop ​ ①用来重复执行某些语句,直到循环退出(使用 leave 子句

    2024年04月14日
    浏览(38)
  • 三、流程控制语句

    流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序步骤的基本手段。如果没有流程控制语句,整个程序将按照线性的顺序来执行,不能根据用户的输入决定执行的序列。 Java程序是从上到下逐行执行语句,中间没有任何判断和跳转。 根据条件,选择性地

    2024年02月04日
    浏览(72)
  • Java 流程控制 Switch 语句

    一、什么是Switch语句? Switch语句是Java中的一种流程控制语句,用于根据表达式的值选择不同的执行路径。Switch语句通常用于多个条件的判断,比如根据用户输入的不同选项执行不同的操作。 二、语法说明 Switch语句的基本语法如下: Switch语句包含一个表达式和多个case语句块

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包