GO学习笔记——GO语言中那些控制语句(7)

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的")
}

这边来说几个注意点:

  1. GO语言中if条件语句后面不用带括号
  2. GO语言中if条件语句的{}必须要有,不可以像C++一样,如果{}内只有一行语句可以省略{}
  3. 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上。这边还是提几个注意点

  1. GO语言中for循环语句后面不要带括号(这和if也是一样的)
  2. GO语言中for循环语句的{}必须要有,不可以像C++一样,如果{}内只有一行语句可以省略{}(这和if也是一样的)
  3. GO语言中可以像C++一样,在第一个statement部分直接执行一个声明语句,声明一个属于for循环语句本身的变量

其他的用法和C++都差不多,包括像break和continue这样的用法,对for循环中省略几个条件能达到和while循环差不多的效果,如果三个条件都省略也可以达到死循环的效果,这个和C++也是一样的。

猜你喜欢

转载自blog.csdn.net/lvyibin890/article/details/83268682