if条件语句
先来看一下一个简单的条件语句的模型
a := 1
if a > 0 {
fmt.Println("a是大于0的")
if a < 4{
fmt.Println("a是小于4的")
}
}else if a < 0{
fmt.Println("a是小于0的")
}else{
fmt.Println("a是等于0的")
}
这边来说几个注意点:
- GO语言中if条件语句后面不用带括号
- GO语言中if条件语句的{}必须要有,不可以像C++一样,如果{}内只有一行语句可以省略{}
- else或else if应该在上一个模块的 } 的同一行之后,不可以像下面这样写,编译器会报错。
a := 1
if a > 0 {
fmt.Println("a是大于0的")
if a < 4{
fmt.Println("a是小于4的")
}
}
else if a < 0{
fmt.Println("a是小于0的")
}
else{
fmt.Println("a是等于0的")
}
//这边出错的原因是 Go 语言的分号是自动插入的
下面来说一个GO语言if条件语句的另一种用法,这也是GO相对于C++比较方便的一个地方:可以在条件语句先执行一个声明语句
if statement; condition {
}
上述的statement是可选的,如果有,那就有了一个声明语句。下面的代码a初始化的地方在if语句中
if a := 1;a > 0 {
fmt.Println("a是大于0的")
if a < 4{
fmt.Println("a是小于4的")
}
} else if a < 0 {
fmt.Println("a是小于0的")
} else {
fmt.Println("a是等于0的")
}
GO语言中,还可以在if条件语句的地方创建一个属于这个if条件语句的变量,如上a就是属于这个if条件语句的变量,在后续的else if 和 else中都可以访问这个变量,但是条件语句外不可以访问这个变量a。
这其实好比C++在下面的for循环语句中对C优化的一点
for (int i = 0; i < 10 ; ++i)
cout << i << endl
C++这个变量i也是属于这个for循环的,for循环外就访问不到这个变量i了。而C语言中这样写是会在有些编译器下是会报错的。
switch选择语句
先来看一下一个简单的switch语句模型
a := 1
switch a{
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("不是1也不是2")
}
学过C++的人都知道,C++的语句每个case模块都是需要有break的,而GO语言中却没有。因此这也是GO语言方便的一个地方,我们不用每次在case后面都写一个break啦,编译器会默认认为执行一个case就会break了。如果不想让它break,才需要加上关键字fallthrough
同样地,switch语句也好if语句一样,可以先执行一个声明语句,它的用法和if也是一样的,如下属代码
switch a := 1;a{ //在switch内部使用的一个变量a
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("不是1也不是2")
}
另外,GO语言中switch语句还可以实现,多表达式判断的方式,用逗号隔开就可以了
switch a := 1;a{ //在switch内部使用的一个变量a
case 1,2: //如果是1或是2,都执行下面的语句
fmt.Println("1或2")
default:
fmt.Println("不是1也不是2")
}
还有无条件判断语句,即switch后面可以没有表达式(有声明语句没有表达式也算, 如下)
switch a:= 1;{
//在switch内部使用的一个变量a,但是;后面并没有表达式,在case中进行条件判断
case a == 1 || a == 2:
fmt.Println("1或2")
default:
fmt.Println("不是1也不是2")
}
for循环语句
GO中的循环语句没有while了,只有for,下面来看一下一个简单的for循环
a := 0
for i := 1; i < 10; i++{
a += i
}
下面的循环就是把1-10加到了a上。这边还是提几个注意点
- GO语言中for循环语句后面不要带括号(这和if也是一样的)
- GO语言中for循环语句的{}必须要有,不可以像C++一样,如果{}内只有一行语句可以省略{}(这和if也是一样的)
- GO语言中可以像C++一样,在第一个statement部分直接执行一个声明语句,声明一个属于for循环语句本身的变量
其他的用法和C++都差不多,包括像break和continue这样的用法,对for循环中省略几个条件能达到和while循环差不多的效果,如果三个条件都省略也可以达到死循环的效果,这个和C++也是一样的。