GO入门——3. 控制语句
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. 控制语句的更多相关文章
- java SE 入门之控制语句&方法&递归算法(第五篇)
一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...
- C++ Primer高速入门之三:几种常见的控制语句
语句总是顺序运行的:第一条语句运行完了接着是第二条,第三条等等.这是最简单的情况,为了更好的控制语句的运行.程序设计语言提供了多种控制结构支持更为复杂的语句运行.我们就来看看C++ 提供的控制方式. ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- Python 入门之流程控制语句
Python 入门之流程控制语句 1.if判断 (1) 单 if if –-如果 if 条件: 缩进 结果 (官方推荐4个空格,或者一个tab 不能空格和tab混合使用) money = 10 pri ...
- 数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句
流程控制语句 计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次.主要有条件和循环语句. Golang只有一种循环:for,只有一种判断:if,还有一种特殊的switch条件 ...
- 01-C#入门(分支控制语句)
说实话,<C#入门经典>这本书对入门的同学来说真的太棒了,先不说内容如何,就作者先以控制台(命令行)调试程序的方法,就能够最大限度地让你关注学习的内容,而不是花哨的界面调试. 现在学习是下 ...
- salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常 ...
- 【C语言入门教程】3.3 条件控制语句
在程序的 3 种基本结构中,第二种是选择结构,选择结构是根据程序运行时获得的条件,决定程序执行情况.条件控制语句可用来实现这种结构,C 语言提供了 if 语句和 switch 语句两种条件控制语句,i ...
- 【C语言入门教程】3.4 循环控制语句
循环结构又称重复结构,是程序的 种基本结构之一.它反复执行循环体内的代码,解决需要大量重复处理的问题.循环结构由循环控制语句实现,其中内建有条件控制语句,用来判读是否继续执行循环操作.C 语言提供了 ...
随机推荐
- 20155205 2016-2017-2 《Java程序设计》第1周学习总结
20155205 2016-2017-2 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 下载了娄老师推介的xmind,试着自己总结了一下. 为了要运行Java程序,必须安装 ...
- SSH 等效性问题 总提示输入密码问题
家目录权限问题 .chmod 700 /home/.. 得到的教训就是没事儿不要乱修改家目录权限,一时方便,可能在别的地方载跟头 ~~ 浪费好许时间 哎
- Android内容提供者(Content provider)
使用ContentProvider共享数据 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访 ...
- SurfaceView+MediaPlayer播放视频
SurfaceView拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行行绘制.又由于不占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面又不 ...
- adb push 和 adb pull命令
adb push命令 :从电脑上传送文件到手机: adb pull命令 :从手机传送文件到电脑上 @Cocos 下次需要权限的目录可以执行chmod 777 目录名 ...
- VARCHAR的最大长度的问题
大家知道,在SQL Server 2000中,VARCHAR的最大长度是8000,如果字符串的长度超过8000,保存在VARCHAR中时就会被截断.如果你需要传入的参数恰好很长,比如是一个xml,很多 ...
- 关于synchronized和lock 的使用及其在线程间的通信
题目要求:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次 synchronized的使用 import java.util.conc ...
- 应该知道的Linux技巧【转】
这篇文章来源于Quroa的一个问答<What are some time-saving tips that every Linux user should know?>—— Linux用户 ...
- Django:在模板中获取当前url信息
确保项目配置里的context_processors包含django.template.context_processors.request. 从 Django 1.9 开始, 默认是已经配置的. P ...
- SQL SERVER的锁机制(一)——概述(锁的种类与范围)
锁定:通俗的讲就是加锁.锁定是 Microsoft SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制. 定义:当有事务操作时,数据库引擎会要求不同类型的锁定,如相关数 ...