【Go】基础语法--控制结构

控制结构在编程语言中无处不在,它控制着流程的走向

go中的控制结构相对其他编程语言来说,比较少了, 没有 do 、 while 那样的循环了

go中有特殊一点的 select

go的控制结构,无需圆括号,但是语句必须在大括号内, 同样 左大括号 必须和判断语句同一行

if 结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
"fmt"
)

func main() {
var age int = 29

if age > 30 {
fmt.Println("30而立")
} else {
fmt.Println("你还是太年轻了!")
}
}

保存为 helloworld.go, 然后执行

1
2
[me@VM_0_14_centos go]# go run helloworld.go 
你还是太年轻了!

for 循环结构

for循环是由三部分组成,他们分别用 分号; 隔开

初始化语句: 第一次迭代之前执行
条件表达式: 每次迭代器求值判断
后置语句: 每次迭代结尾执行

看一个求1~100求和的简单程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
"fmt"
)

func main() {
var sum int = 0

for i := 1; i <= 100; i++ {
sum += i
}

fmt.Println(sum)
}

保存为 helloworld.go, 然后执行

1
2
[me@VM_0_14_centos go]# go run helloworld.go 
5050

这里用到了变量定义的快捷写法 := , 在循环结构中使用,简洁方便

breank、continue 终止循环结构

这两个和其他编程语言的语义基本一致

range

range一般可用于循环, 它是一个迭代器

1
2
3
4
5
6
7
8
9
10
11
12
pakcage main
import (
"fmt"
)

func main() {
list := []string{"a", "b", "c", "d", "e", "f"}

for k, v := range list {
fmt.Printf("%d %s\n", k, v)
}
}

保存为hello.world.go, 执行结果:

1
2
3
4
5
6
7
[me@VM_0_14_centos go]# go run helloworld.go 
0 a
1 b
2 c
3 d
4 e
5 f

所以range其实就是迭代器,循环迭代,返回 序号为key, 值为value

switch

go的switch比较灵活,表达式允许不是常量或整数,甚至允许没有表达式

如果没有表达式,则默认匹配 true

1
2
3
4
5
switch i {
case 0:
case 1:
test()
}

当i == 0匹配的时候,并不会默认去调用 test()

1
2
3
4
5
switch i {
case 0: fallthrough
case 1:
test()
}

这个时候,当i == 0匹配的时候,会调用 test()

坚持原创技术分享,您的支持将鼓励我继续创作!