1 if

  • 条件表达式没有括号
  • 支持一个初始化表达式(可以是并行方式)
  • 左大括号必须和条件语句或else在同一行
  • 支持单行模式
  • 初始化语句中的变量为block级别,同时隐藏外部同名变量

a := 1
if a > 0 {
fmt.Println("yes") //输出该结果
}
//加初始表达式
if b := 2; a < b {
fmt.Println("a<b") //输出该结果
}
//加并行初始表达式
if b, c := 0, 2; a > b && c > a {
fmt.Println("a>b && c>a") //输出该结果
}
//同名变量外部将隐藏
if a := 2; a > 0 {
fmt.Println(a) //输出2
}
fmt.Println(a) //输出1

2 for

  • Go只有for一个循环语句关键字,但支持3种形式
  • 初始化和步进表达式可以是多个值
  • 条件语句每次循环都会被重新检查,因此不建议在条件语句中

    使用函数,尽量提前计算好条件并以变量或常量代替
  • 左大括号必须和条件语句在同一行
	i := 0
//死循环
for {
fmt.Println("进入死循环,一般用break退出")
break
}
//while循环
for i < 10 {
fmt.Println("相当于while循环")
i++ //go中++只能出现在等式的左边,且没有++i这种
}
//正常for循环,并行赋值
for i, j := 1, 2; i < 5; i++ {
fmt.Println(i, j)
}

3 switch

  • 可以使用任何类型或表达式作为条件语句
  • 不需要写break,一旦条件符合自动终止
  • 如希望继续执行下一个case,需使用fallthrough语句,使用后下一个case一定会执行不管条件是否满足
  • 支持一个初始化表达式(可以是并行方式),右侧需跟分号
  • 左大括号必须和条件语句在同一行
a := 0
//普通的switch
switch a {
case 0:
fmt.Println("0")
fallthrough
case 1: //此时这个case一定会执行
fmt.Println("1")
case 2: //不执行
fmt.Println("2")
default:
fmt.Println("default")
}
//相当于if,case中一定要是条件
switch {
case 0 != 0:
fmt.Println("0")
case 1 > 2:
fmt.Println("1")
case 2 == 2: //执行
fmt.Println("2")
fallthrough
default: //执行
fmt.Println("default")
}
//带初始化表达式的switch
switch a := 6; a {
case 6: //执行,switch中声明的变量会隐藏调外部变量
fmt.Println(a)
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("default")
}

4 goto,break,continue

  • 三个语法都可以配合标签使用
  • 标签名区分大小写,若不使用会造成编译错误
  • break与continue配合标签可用于多层循环的跳出
  • goto是调整执行位置,与其它2个语句配合标签的结果并不相同
	//label加continue
LABEL:
for i := 0; i < 5; i++ {
for {
fmt.Println("二层for", i) //输出5次
continue LABEL
}
}
//label加break
LABEL1:
for i := 0; i < 5; i++ {
for {
fmt.Println("二层for", i)
break LABEL1
}
}
//label加goto,如果不用count判断则是一个无限循环
count := 0
LABEL2:
if count > 2 {
goto LABEL3
}
for i := 0; i < 5; i++ {
for {
count++
fmt.Println("无限循环", count)
goto LABEL2
}
}
LABEL3:
fmt.Println("over")

GO入门——3. 控制语句的更多相关文章

  1. java SE 入门之控制语句&方法&递归算法(第五篇)

    一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...

  2. C++ Primer高速入门之三:几种常见的控制语句

    语句总是顺序运行的:第一条语句运行完了接着是第二条,第三条等等.这是最简单的情况,为了更好的控制语句的运行.程序设计语言提供了多种控制结构支持更为复杂的语句运行.我们就来看看C++ 提供的控制方式. ...

  3. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  4. Python 入门之流程控制语句

    Python 入门之流程控制语句 1.if判断 (1) 单 if if –-如果 if 条件: 缩进 结果 (官方推荐4个空格,或者一个tab 不能空格和tab混合使用) money = 10 pri ...

  5. 数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句

    流程控制语句 计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次.主要有条件和循环语句. Golang只有一种循环:for,只有一种判断:if,还有一种特殊的switch条件 ...

  6. 01-C#入门(分支控制语句)

    说实话,<C#入门经典>这本书对入门的同学来说真的太棒了,先不说内容如何,就作者先以控制台(命令行)调试程序的方法,就能够最大限度地让你关注学习的内容,而不是花哨的界面调试. 现在学习是下 ...

  7. salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常 ...

  8. 【C语言入门教程】3.3 条件控制语句

    在程序的 3 种基本结构中,第二种是选择结构,选择结构是根据程序运行时获得的条件,决定程序执行情况.条件控制语句可用来实现这种结构,C 语言提供了 if 语句和 switch 语句两种条件控制语句,i ...

  9. 【C语言入门教程】3.4 循环控制语句

    循环结构又称重复结构,是程序的 种基本结构之一.它反复执行循环体内的代码,解决需要大量重复处理的问题.循环结构由循环控制语句实现,其中内建有条件控制语句,用来判读是否继续执行循环操作.C 语言提供了  ...

随机推荐

  1. java -version 版本号与path中配置的不一致

    Error: could not open `F:\e\java\jre7\lib\amd64\jvm.cfg' C:\Users\wl>java -versionError: could no ...

  2. Codeforces820A Mister B and Book Reading 2017-06-28 09:38 67人阅读 评论(0) 收藏

    A. Mister B and Book Reading time limit per test 2 seconds memory limit per test 256 megabytes input ...

  3. Maven中项目的启动

    在run选项卡中,选择Run Configurations

  4. ssh连接超慢解决

    手头有台Linux服务器ssh登录时超级慢,需要几十秒.其它服务器均没有这个问题.平时登录操作都默默忍了.今天终于忍不住想搞清楚到底什么原因.搜索了一下发现了很多关于ssh登录慢的资料,于是自己也学着 ...

  5. Oracle EBS使用adpatch工具打patch过程(hotpatch mode)

    目录(?)[-] 从Metalink下载补丁 上传解压 使用adpatch来打patch完整的日志 检查patch是否打成功 adpatch的日志文件 补充关于Oracle EBS Patch的类型 ...

  6. 微擎开启性能优化里面的性能优化memcache内存优化及数据库读写分离

    http://www.mitusky.com/forum.php?mod=viewthread&tid=3135 [微擎 安装使用] 微擎开启性能优化里面的性能优化memcache内存优化及数 ...

  7. WebAPI中发送字节数组

    今天工作中遇到了一个情景: 前端向后台发送一个请求,希望后台返回一组数据,由于后台返回的数据量很大,希望尽可能压缩响应的大小 我的想法:后台将数据(Short的数组)直接转换成Byte[]  然后将b ...

  8. 添加vscode自定义代码块

    以vue为例 一.打开vscode>文件>首选项>用户代码片段>vue.json二.编写代码块 其中一行一句:$1是占位符,就是你可以输入的地方."http get& ...

  9. Android---------------Handler的学习

    public LocalVPNService() { mHandlerThread = new HandlerThread(TAG); mHandlerThread.start(); mBackgro ...

  10. SQL注入之PHP-MySQL实现手工注入-数字型

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎 ...