break

  • select中的break,类似c系列中的break,break后的语句不执行
  • for和select一同使用,有坑

    break只能跳出select,无法跳出for
package test

import (
"fmt"
"testing"
"time"
) func TestBreak(t *testing.T) {
tick := time.Tick(time.Second)
for {
select {
case t := <-tick:
fmt.Println(t)
break
}
}
fmt.Println("end")
}

执行结果:

=== RUN   TestBreak
2019-12-19 14:43:41.7912242 +0800 CST m=+1.005627701
2019-12-19 14:43:42.0862832 +0800 CST m=+1.007127901
2019-12-19 14:43:42.7914242 +0800 CST m=+2.005754701
2019-12-19 14:43:43.0864832 +0800 CST m=+2.007254901
...

break无法跳出select的解决方案

1、标签

func TestBreak(t *testing.T) {
tick := time.Tick(time.Second)
//FOR是标签
FOR:
for {
select {
case t := <-tick:
fmt.Println(t)
//break出FOR标签标识的代码
break FOR
}
}
fmt.Println("end")
}

2、goto


func TestBreak(t *testing.T) {
tick := time.Tick(time.Second)
for {
select {
case t := <-tick:
fmt.Println(t)
//跳到指定位置
goto END
}
}
END:
fmt.Println("end")
}

执行结果:

=== RUN   TestBreak
2019-12-19 14:43:41.7912242 +0800 CST m=+1.005627701
end

continue

单独在select中是不能使用continue,会编译错误,只能用在for-select中。

continue的语义就类似for中的语义,select后的代码不会被执行到。

func TestBreak(t *testing.T) {
tick := time.Tick(time.Second)
for {
select {
case t := <-tick:
fmt.Println(t)
continue
fmt.Println("test")
}
}
fmt.Println("end")
}

执行结果

=== RUN   TestBreak
2019-12-19 14:43:41.7912242 +0800 CST m=+1.005627701
2019-12-19 14:43:42.0862832 +0800 CST m=+1.007127901
2019-12-19 14:43:42.7914242 +0800 CST m=+2.005754701
2019-12-19 14:43:43.0864832 +0800 CST m=+2.007254901
...

return

和函数中的return一样,跳出select,和for,后续代码都不执行

[Go] 基础系列一: for-select中的break、continue和return的更多相关文章

  1. [转帖]Shell脚本中的break continue exit return

    Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 cont ...

  2. 【疑点】js中的break,continue和return到底怎么用?

    转: [疑点]js中的break,continue和return到底怎么用? 为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在 ...

  3. js中的break,continue和return到底怎么用?

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  4. js中的break,continue和return的用法及区别

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  5. Shell脚本中的break continue exit return

    转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 continue在循环中不执行continue下面的代码,转而进入下一轮循环 e ...

  6. js中的break ,continue, return (转)

    面向对象编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢?我们在使用这三关键字的时候需要注意和需要理解的规则是什么呢? ...

  7. js中退出语句break,continue和return 比较 (转载)

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...

  8. js中退出语句break,continue和return 比较

    js中退出语句break,continue和return 比较 在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是 ...

  9. JS中break continue和return的用法?

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 break和continue: 退出循环 ...

随机推荐

  1. 洛谷 P1217 回文质数

    洛谷 P1217 回文质数 链接 https://www.luogu.org/problem/P1217 题目 题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 ...

  2. PMBOK项目管理的五大过程组和十大知识领域

    PMBOK五大过程组是:启动过程.规划过程.执行过程.监控过程.收尾过程. 各用一句话概括项目管理知识体系五大过程组: 1.启动过程组:作用是设定项目目标,让项目团队有事可做: 2.规划过程组:作用是 ...

  3. Asp.Net 加载不同项目程序集

    我们做项目时有时候不想添加别的项目的引用,但是那个项目又必须在 Global 中进行注册 最常见的就是插件机制,参考: https://shazwazza.com/post/Developing-a- ...

  4. MSMQ消息队列,包括远程访问

    之前的项目用到了队列,现在总结一下,下面有非常详细的DEMO,希望能对有需要的人提供帮助. 使用场景:在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了 ...

  5. Python之数据处理-2

    一.数据处理其实是一个很麻烦的事情. 在一个样本中存在特征数据(比如:人(身高.体重.出生年月.年龄.职业.收入...))当数据的特征太多或者特征权重小或者特征部分满足的时候. 这个时候就要进行数据的 ...

  6. mybatis获取刚刚插入到数据库的数据的id(转载)

    原文地址:https://blog.csdn.net/hehuihh/article/details/82800739 我用的是第一种写法,直接把代码copy到insert标签里(id要是自增id) ...

  7. TypeScript算法与数据结构-栈篇

    本文的源码在这里,可以参考一下 栈也是一种使用非常广泛的线性数据结构,它具有后进先出last in first out的特点.通俗的例子就像我们平时一本一本的往上放书,等到我们又想用书时,我们首先接触 ...

  8. ECMAScript5面向对象技术(2)--函数

    在JavaScript中,函数其实就是对象.使函数不同于其他对象的决定性特点是函数存在一个被称为[[Call]]的内部属性.内部属性无法通过代码访问而是定义了代码执行时的行为.ECMAScript为J ...

  9. HTML认识一

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. stm32 FSMC-TFTLCD显示

    TFTLCD TFT液晶屏常用的通信模式主要有6800模式和8080模式,对于TFT彩屏通常都使用8080并口(简称80并口)模式 8080模式的读写时序其实跟LCD1602或者LCD12864的读写 ...