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 语言提供了 ...
随机推荐
- Spring通过注解配置Bean
@Component: 基本注解, 标识了一个受 Spring 管理的组件@Repository: 标识持久层组件@Service: 标识服务层(业务层)组件@Controller: 标识表现层组件 ...
- MyGeneration使用概述
1.首先要连接数据库,第一次启动myG的时候会弹出default settings对话框,以后也可以在Edit-default settings里面修改.default settings有3个tabs ...
- 【1】ASP.NET异步(1)
图标说明了异步的基础认识. 1.如果没有Ajax,提交之后整个页会刷新(左图).右图所示的虚线范围区域加入了ajax技术,提交之后只更新了虚线区域的内容,这样看比较直白. <form>①& ...
- js基础学习笔记(一)
* 在js编写过程中,尽量保持统一使用单引号 'XXXX': * 所有变量都要声明 var,避免全局函数调用的冲突: 1.1 输出内容 docment.write(‘aileLi’); 改变某I ...
- 初识Android的ReactiveX
初识Android的ReactiveX 开发一个复杂一点的Android应用都会用到网络请求,交互和动画.这些都意味着 要写很多的回调嵌套.这样的代码也被称为callback hell(回调地狱).这 ...
- (转)WAMP多站点配置
转自:http://wislab.net/archives/43.html Wamp正在被广泛使用,其傻瓜式的安装配置,使得我们可以得心应手地完成以往较为烦琐的服务器环境搭建过程,直接进入到网页程序的 ...
- 运行Xcode时,提示:An error was encountered while running (Domain = FBSOpenApplicationErrorDomain, Code = 4)
运行Xcode模拟器时,提示: An error was encountered while running (Domain = FBSOpenApplicationErrorDomain, Code ...
- 批量插入,批量修改的sql
sql 1 批量插入 <insert id="batchInsert" useGeneratedKeys="true" parameterType=&q ...
- hdu 4940 数据太水...
http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...
- [Proposal]Transform ur shapes!
[Name] Transform ur shapes [Motivation]市场上有很多涂鸦游戏,例如火柴人涂鸦,非常有趣 我们可以结合所学,将一些图形变形的操作融入进去,做一个我们自己的有趣的游戏 ...