1.判断语句if
1)条件表达式没有括号
2)支持一个初始化表达式(可以是并行方式)
3)左大括号必须和条件语言else在同一行
4)支持单行模式
5)初始化语句中的变量为block级别,同时隐藏外部同名变量
package main
import "fmt"
func main() {
a := true
if a, b, c := 1, 2, 3; a+b+c > 6 {
fmt.Println("大于6")
} else {
fmt.Println("小于等于6")
fmt.Println(a)
}
fmt.Println(a)
}
输出:
API server listening at: 127.0.0.1:33684
小于等于6
1
true
从上述例子看出,if中的a是1,外部的a是true,这两个不是同一个元素,if中的属于一个局部变量
2.循环语句for
1)Go只有for一个循环语句关键字,但支持3中形式
2)初始化和步进表达式可以是多个值
3)条件语句每次循环都会呗重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替
3)左大括号必须和条件语句在同一行
例如:不同形式的三种for循环
package main
import "fmt"
func main() {
//方式一
a := 1
for {
a++
if a > 3 {
break
}
}
fmt.Println(a)
//方式二
b := 1
for b <= 3 {
b++
}
fmt.Println(b)
//方式三
c := 1
for i := 0; i < 3; i++ {
c++
}
fmt.Println(c)
}
输出:
API server listening at: 127.0.0.1:17197
4
4
4
3.选择语句switch
1)可以使用任何类型或表达式作为条件语句
2)不需要写break,一旦条件符合自动终止
3)如果希望继续执行下一个case,需要使用fallthrough语句
4)支持一个初始化表达式(可以是并行方式),右侧需要跟分号
5)左大括号必须和条件语句在同一行
实例:
package main
import "fmt"
func main() {
fmt.Println("方式一")
a := 1
switch a {
case 0:
fmt.Println("a = 0")
case 1:
fmt.Println("a = 1")
}
fmt.Println(a)
fmt.Println("方式二")
b := 1
switch {
case b >= 0:
fmt.Println("b = 0")
fallthrough
case b >= 1:
fmt.Println("b = 1")
}
fmt.Println(b)
fmt.Println("方式三")
switch c := 1; {
case c >= 0:
fmt.Println("c = 0")
fallthrough
case c >= 1:
fmt.Println("c = 1")
}
}
输出:
API server listening at: 127.0.0.1:14256
方式一
a = 1
1
方式二
b = 0
b = 1
1
方式三
c = 0
c = 1
4.跳转语句 goto,break,continue
1)三个语法都可以配合标签使用
2)标签名区分大小写,若不使用会造成编译错误
3)break与continue配合标签可用于多次循环的跳出
4)goto是调整执行位置,与其他2个语句配合标签的结果并不相同
实例:
package main
import "fmt"
func main() {
fmt.Println("方式一")
LABEL:
for {
for i := 0; i < 10; i++ {
if i > 2 {
break LABEL
} else {
fmt.Println(i)
}
}
}
fmt.Println("方式二")
LABEL1:
for i := 0; i < 10; i++ {
for {
fmt.Println(i)
continue LABEL1
}
}
}
输出:
API server listening at: 127.0.0.1:37291
方式一
0
1
2
方式二
0
1
2
3
4
5
6
7
8
9