Go语言支持最基本的三种程序结构
- 顺序结构
- 选择结构
- 循环结构
选择结构
if语句
Go语言中的if语句是没有括号的
代码演示如下
var a int = 3 // 因为a == 3 所以说只会输出3
if a == 3 {
fmt.Println("a == 3")
}
if a == 4 {
fmt.Println("a == 4")
}
此外Go语言的if语句还支持一个初始化表达式
始化表达式和条件表达式之间要用分号隔开
if b:=3 ; b == 3{ // 初始化表达式和条件表达式之间要用分号隔开
Go语言和C++中if语句的差别主要是有两点
- Go语言中的if elseif等后面条件不加括号
- Go语言的大括号禁止换行
代码表示如下
// test if ... else ...
var a int = 5
if a == 3 {
fmt.Println("a == 3")
}else if a == 4 {
fmt.Println("a == 4")
}else {
fmt.Println("a != 3")
}
switch语句
Go语言的switch语句和C++中的switch语句不同的是 Go语言中的case语句后面默认带着break 所以说我们不用像C++一样后面加上break了
代码示例如下
// test switch case
var score int = 90
switch score{
case 90:
fmt.Println("优秀")
case 80:
fmt.Println("良好")
case 70 , 60 , 50 :
fmt.Println("一般")
default:
fmt.Println("差")
}
如果我们想要强制执行后面的代码 只需要在执行语句后面加上一个 fallthrough
即可
// test switch case
var score int = 90
switch score{
case 90:
fmt.Println("优秀")
fallthrough
case 80:
fmt.Println("良好")
case 70 , 60 , 50 :
fmt.Println("一般")
default:
fmt.Println("差")
}
如果我们不指定switch的变量 我们还可以使用条件表达式来case 比如说
var score int = 90
switch { // 不switch变量
case score >= 90:
fmt.Println("优秀")
default:
fmt.Println("差")
}
循环结构
**这里需要注意的是 go语言没有while循环 **
for循环
for循环和C++的唯一区别就是不加括号
代码示例如下
func test5() {
var sum int = 0
var i int = 0
for i = 0; i < 10; i++{
sum += i
}
fmt.Println(sum)
}
这里值得注意的一点是 go语言中不允许int a = 10 这种写法
range
在Go语言中 我们可以使用range来遍历一个字符串或数组等
关键字range会返回给我们两个值 一个是下标 一个是元素的值
如果说我们只用一个参数接受返回值的话 那么默认就是接受下标
var str string = "abcde"
for _ , i := range str { // 舍弃掉下表 只需要stirng中的值
fmt.Printf("%c\n" , i)
}
跳转语句
Go语言的跳转语句有三个
- break
- continue
- goto
break是跳出当前循环 它在循环语句中都可以使用 而continue只能在for循环中使用
goto的用法也和我们C++的用法一样 但是我们不建议使用goto 这会导致执行流乱跳的情况