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. Mybatis:缓存

    1.什么是缓存[Cache] 存在内存中的临时数据. 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统 ...

  2. 关于http的小知识

    http客户端发起请求,创建端口 http服务器在端口监听客户端请求 http服务器向客户端返回状态和内容 浏览器: 1.Chrome搜索自身的DNS缓存 2.搜索操作系统自身的DNS缓存(浏览器没有 ...

  3. TR-TR模块资料汇总

    转载: TR模块培训 https://www.docin.com/p-1704805923.html 现金管理(Cash Management)和预算控制(Cash Budget Management ...

  4. 七年开发经验详解JVM的GC 算法

    概述 GC 是 JVM 自带的功能,它能够自动回收对象,清理内存,这是 Java 语言的一大优势,但是GC绝不仅伴随着Java,相反,GC历史比Java更悠久.关于GC,我认为有四个问题需要解决: 为 ...

  5. scrapy框架介绍

    一,介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性 ...

  6. 元类编程--__get__ __set__属性描述符

    from datetime import date, datetime import numbers class IntField: #数据描述符,实现以下任意一个,都会变为属性描述符 def __g ...

  7. 解决windows 1903 alt + tab 切换卡顿

    右击此电脑图标 选择管理 服务和应用程序 服务 禁用system interface foundation service

  8. 管理Linux软件——apt

    参考:Ubuntu的apt命令详解 apt命令是一个功能强大的命令行工具,它与Ubuntu的高级打包工具(APT,Advanced Packaging Tool )配合使用,可以执行安装新软件包,升级 ...

  9. Redis 从入门到放弃

    Redis 从入门到放弃 http://www.iocoder.cn/Fight/Redis-went-from-getting-started-to-quitting/

  10. 2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂

    2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] ​ 已知\(f(n)=3\cdot f(n ...