晴朗的天气,今天继续进行Go的学习,今天学习的是Go中几种程序控制器,for和if/else
Go语言中的for
首先我们看下for循环,在Java中,我们可以使用for或者while。但是在Go中,只有for,没有while,但是可以实现和while差不多的效果。下面我们来看看for的几种使用方式。
- 第一种,最基本的类型,包含初始值,条件判断,以及后续的执行。
for j:=1 ; j<10 ; j++ {
fmt.Println(j)
}
这里我们可以发现,初始化使用的是 j := 1 ,这种方式就是我们在变量篇介绍过的,他把申明和定义放在了一起,而且把作用于控制在这个for函数中,这种就是类似我们日常在Java中下面的这个写法
// java中的for循环
for (int j=1 ; j<10 ; j++) {
System.out.println(j);
}
此外,如果我们不像使用上面的这种for循环中的局部变量的话,我们可以使用如下的方式:
var j = 1
for j = 1 ; j<10 ; j++ {
fmt.Println(j);
}
上面main的这种方式,j这个变量就不是纯粹for循环中的局部变量了。
- 第二种,只有一个条件判断
var j = 1
for j< 10 {
fmt.Println(j)
j = j + 1
}
这种方式,其实和Java中的while是一样的了。
- 第三种,无限循环的模式
var j = 1
for {
fmt.Println(j);
j = j + 1
if j >= 10 {
break
}
}
上面这种,只能通过for循环中的内部逻辑主动跳出循环,类似使用break
Go语言中的if/else
Go中的if/else的用法,和Java中类似,只是判断条件可以不使用 (),但是要使用 {},而且else一定要在for循环的右大括号的后面。
// 不使用() ,但是一定要有{},而且 左货号一定要和if一行,右括号单独一行。
var i = 0;
if i < 10 {
fmt.Println(i)
}
// 下面这个显示的是else的用法
if i > 10 {
fmt.Println("in if")
} else {
fmt.Println("in else")
}
另外和Java中不一样的是,Go中的if语句中,除了一个判断条件外,可以增加了一个语句。类似下面的写法
for i := 0 ; i < 10 {
fmt.Println(i)
}
这种写法,可以让Go中的代码更加简洁点。类似下面获取map中的值。
var s map[int64]int64
s = make(map[int64]int64, 0)
if val, ok := s[1]; ok {
fmt.Println(val)
} else {
fmt.Println("not exist")
}
这种写法把判断和取值放在一个语句里面,会让代码更加的简洁。
结语
今天学习了Go的两种控制语句,有和Java相同的地方,也有Go特有的地方,而且Go特别注重语法的格式,对格式都是强校验的。明天继续学习。